当前位置:首页 > 单片机 > 单片机
[导读] 使用AT89S51单片机,在原有的基础改动,将LED灯亮4s熄2s。谢谢。用定时器。(程序写在答案中,此处略 ――做而论道注)原来的程序(局部)如下:LOOP: MOV R0, #0AH ;R0=10 CJNE R0, #00H, $ ;比较R0是

使用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

;---------------------------------------------------


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭