乐鱼平台地址入口
LED灯的多种运用方法
来源:乐鱼平台地址入口 发布时间:2023-09-24 06:37:40
端口P0编号不能用小写。P字母有必要大写。 给P0赋值时,尽管赋的是16进制的值,可是不能在后面加H。 最重要的是延时问题!
要注意的是用C言语不大或许做出精确的延时作用,肯定会存在必定的差错!!!!
时钟周期:也称振动周期,界说为频率的倒数,它是单片机中最根本,最小的时刻单位。 状况周期:它是时钟周期的两倍。 机器周期:单片机的根本周期,完结一项根本操作,如取指令,存储器读写等,它由12个时钟周期(6个状况周期)构成。 指令周期:单片机履行一条指令所需求的时刻,一般是1-4个机器周期。
在这儿,我把晶振的频率设置为跟自己设备相同,为12MHZ,所以机器周期为1s。而整个程序的时刻能依据Keil的调试功用检查。
翻开Keil的调试功用(便是菜单栏里放大镜里边有个d的那个图标),然后再在所需求的当地设置断点。如下图所示:
如图所示,在15行,16行方位设置了断点。图片左边部分,能够找到“sec”这一项,这一项便是履行到这步所需求的时刻,然后能够精确的通过时刻差核算延时的时刻。
履行到16行的时分时刻为0.00039100s,所以履行P0=0x00的时刻为2s,即两个机器周期,由于这儿用的是当即数寻址,取值一周期,履行一周期。
履行到19行的时刻为0.97892600s,所以履行delay(45)这句代码的时刻为0.978535s,挨近1s,所以说是存在差错的。可是关于试验作用来说,也现已够了。
最重要的还有一点便是,通过自己试验,不同的类型符号所需求的时刻也是不相同的,比方我选用无符号整形,所需时刻便是3.7s,所以不同仍是很大的。
尽量运用unsigned 型的数据结构。 尽量运用char型,真实不够用再用int,然后才是long。 假如有或许,不要用浮点型。 运用简练的代码,由于依照经历,简练的C代码往往能够生成简练的方针代码(虽然不是在所有的情况下都建立)。
别的的话,在这儿也把汇编的延时程序放出来。相同的,也是先来看用来完成这个方针的代码。
其间DJNZ是减一不为零搬运指令。有两个参数,第一个是被减数,第二个是搬运的地址编号。
履行到12行时,时刻为0.00000400s,所以履行MOV P0,#00H这句句子的时刻为2s,相同的是由于选用了当即数寻址。
所以选用汇编编写延时程序显着比C言语精确的多,当然也不是完全正确,仍是有很小的差错,精确的延时应该用定时器来规划。
功用:发生一个JBC 指令,该函数测验一个位,当置位时回来1,不然回来0。假如该方位为1,则将该位复位为0。8051 的JBC 指令即用作此意图。