使用AT89S51单片机,将LED灯亮4s熄2s

来源:互联网 发布:网络挣钱的软件有哪些 编辑:程序博客网 时间:2024/06/02 18:12

使用AT89S51单片机,在原有的基础改动,将LED灯亮4s熄2s。谢谢。用定时器。
(程序写在答案中,此处略   ――做而论道注)

悬赏分:20 - 解决时间:2009-11-3 21:28
;---------------------------------------------------
最佳答案:

原来的程序(局部)如下:

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

;---------------------------------------------------
回答者:  做而论道 - 九级   2009-11-3 17:14
提问者对于答案的评价:感谢你的帮助 你的答案我到明天就会知道是否正确,正确的话我会追加。
原文网址:http://zhidao.baidu.com/question/124085970.html
;---------------------------------------------------

 

0 0
原创粉丝点击