使用AT89S51单片机,将LED灯亮4s熄2s
扫描二维码
随时随地手机看文章
使用AT89S51单片机,在原有的基础改动,将LED灯亮4s熄2s。谢谢。用定时器。
(程序写在答案中,此处略 ――做而论道注)
原来的程序(局部)如下:
LOOP:
MOV R0, #0AH ;R0=10
CJNE R0, #00H, $ ;比较R0是否为0,原地转移
;R0在中断程序中,100ms减1次1。
;1s钟后,将为0。
CPL LED ;取反,LED亮灭
JMP LOOP
经过分析可以看出,楼主给出的程序是实现LED灯亮1s熄1s的。
按照题目要求,修改后的程序如下:
;----------------------
LED BIT P1.0
ORG 0000H
LJMP START
ORG 000BH
LJMP T0_INT
ORG 0030H
;----------------------
START: ;初始化
MOV SP, #60H
MOV TMOD, #01H ;定时器0方式1定时
MOV TH0, #03CH ;50ms@12MHz
MOV TL0, #0B0H
SETB TR0
SETB ET0
SETB EA ;开中断,完成初始化
;----------------------
LOOP: ;主循环
MOV R0, #40 ;R0 = 40
CJNE R0, #0, $ ;中断40次(即2s),R0才为0
CLR LED ;LED发光
;
MOV R0, #80
CJNE R0, #0, $ ;中断80次,R0才为0
SETB LED ;LED熄灭
LJMP LOOP ;转回去
;----------------------
T0_INT: ;T0的中断程序,100ms执行一次
MOV TL0, #0B0H
MOV TH0, #03CH ;50ms@12MHz
DEC R0 ;R0减一
RETI
;----------------------
END
;---------------------------------------------------