×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-08-26 发布时间:
|

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

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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计