51单片机定时器实现灯的闪烁
扫描二维码
随时随地手机看文章
查询方式,键入程序,看到了什么?灯在闪烁了,这可是用定时器做的,不再是主程序的循环了。
ORG 0000H
AJMP START
ORG 30H
START:
MOV P1,#0FFH ;关所有灯
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#15H
MOV TL0,#0A0H ;即数5536
SETB TR0 ;定时/计数器0开始运行
LOOP:JBC TF0,NEXT ;如果TF0等于1,则清TF0并转NEXT处
AJMP LOOP ;否则跳转到LOOP处运行
NEXT:CPL P1.0
MOV TH0,#15H
MOV TL0,#9FH;重置定时/计数器的初值
AJMP LOOP
END
;简单地分析一下程序,为什么用JBC呢?
;TF0是定时/计数器0的溢出标记位,当定时器产生溢出后,该位由0变1,所以查询该位就可知宇时时间是否已到。
;该位为1后,要用软件将标记位清0,以便下一次定时是间到时该位由0变1,所以用了JBC指令,该指位在判1转移的同时,还将该位清0