51 汇编语言编程:走道灯控制程序

来源:互联网 发布:python 数组排序 编辑:程序博客网 时间:2024/04/28 20:48


按一下按键灯就亮,延时 10s 后自动灭。在亮灯期间再按一下键,灯立即就灭。


用定时器及中断实现。


题目链接:http://zhidao.baidu.com/question/1302357964153805259.html


提问者采纳    2013-12-09 13:47


LED   EQU   P3.3

KEY   EQU   P3.7


    ORG   0000H

    LJMP  START

    ORG   000BH

    LJMP  T0_INT

    ORG   0030H

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

START:

    MOV   TMOD, #01H

    MOV   TH0, #HIGH(65536-62500)

    MOV   TL0, #LOW(65536-62500)

    MOV   IE, #82H

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

LP1:

    SETB  LED        ;关灯

    JB    KEY, LP1   ;等待第一次按键

    CALL  DELAY

    JB    KEY, LP1

    JNB   KEY, $

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

    MOV   R2, #160   ;10s

    SETB  TR0        ;启动定时器

    CLR   LED        ;开灯

LP2:

    JNB   TR0, LP1   ;如果已经定时结束,就去等待第一次按键

    JB    KEY, LP2   ;等待第二次按键

    CALL  DELAY

    JB    KEY, LP2

    JNB   KEY, $


    SJMP  LP1        ;如果发生了第二次按键,就去等待第一次按键

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

T0_INT:

    MOV   TH0, #HIGH(65536-62500)

    MOV   TL0, #LOW(65536-62500)

    DJNZ  R2, T0_E   ;定时10s

    CLR   LED        ;时间到了,关灯

    CLR   TR0

T0_E:

    RETI

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

DELAY:               ;延时约10ms(fosc=12MHz)

    MOV   R6, #20

    DJNZ  R7, $

    DJNZ  R6, $ - 2

    RET

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

END


提问者评价:谢谢了


1 0
原创粉丝点击