用定时器来定时,分别使用中断和查询方法,设计流水灯

P2作输出端口,8个LED灯轮流亮,间隔为1秒。分别采用查询和中断编写源程序。
悬赏分:0 - 解决时间:2010-5-4 17:56
;--------------------------------------------
最佳答案:

假设晶振频率是12MHz;P2口输出低电平时LED发光。
下列两个程序,经过了PROTEUS仿真,能够满足要求。
;===================================================
;下面是查询方式

    ORG  0000H
    LJMP MAIN
    ORG  0050H
MAIN:
    MOV  TMOD, #01         ;令T0定时方式1
    MOV  TH0, #3CH
    MOV  TL0, #0B0H        ;50ms@12MHz
    SETB TR0               ;启动T0
;--------------------------------------------
    MOV  R7, #20
    MOV  A, #7FH
    MOV  P2, A
M_LOOP:
    JNB  TF0, M_LOOP      ;T0没有溢出,就在此循环不止.
    CLR  TF0
    MOV  TL0, #0B0H
    MOV  TH0, #3CH
    DJNZ R7, M_LOOP       ;溢出20次?
    MOV  R7, #20          ;才到1s
    RR   A
    MOV  P2, A

    SJMP M_LOOP
;--------------------------------------------
END
;===================================================
;下面是中断方式

    ORG  0000H
    LJMP MAIN
    ORG  000BH
    LJMP T0_INT
    ORG  0050H
MAIN:
    MOV  TMOD, #01        ;令T0定时方式1
    MOV  TH0, #3CH
    MOV  TL0, #0B0H       ;50ms@12MHz
    SETB TR0              ;启动T0
    MOV  IE, #82H         ;允许中断.
;--------------------------------------------
    MOV  R7, #20
    MOV  A, #7FH
    MOV  P2, A
M_LOOP:
    ;主程序, 空循环         
    SJMP M_LOOP
;--------------------------------------------
T0_INT:                   ;50ms执行一次.
    MOV  TL0, #0B0H
    MOV  TH0, #3CH
    DJNZ R7, T0_END       ;中断20次?
    MOV  R7, #20          ;才到1s
    RR   A
    MOV  P2, A
T0_END:
    RETI
;--------------------------------------------
END
;===================================================
回答者:  做而论道 - 十三级   2010-5-4 17:29
提问者对于答案的评价:非常感谢!!!
原题网址:http://z.baidu.com/question/151022680.html
;===================================================

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值