51 匯編語言編程:走道燈控制程序
按一下按鍵燈就亮,延時 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 ;如果發(fā)生了第二次按鍵,就去等待第一次按鍵
;--------------------------------
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
編輯:admin 最后修改時間:2018-10-08