?? 紅綠燈.asm
字號:
ORG 0000H
LJMP MAIN
; ORG 0003H ;
; LJMP ALLRED
ORG 000BH
LJMP T0ZHIYI
ORG 0013H
LJMP ALLRED
ORG 0030H
MAIN:
START:
;---------- 模式 2 -----------------
;------ 0綠黃紅|0 綠黃紅 ----
RGY: CLR IT1 ;INT0電平觸發(fā)
SETB PX1 ;INT0高優(yōu)先級
SETB EX1 ;開INT0中斷
SETB EA ;開中斷
;------------------------------------
WORK: MOV P0, #00010100B ; 紅--綠
MOV P2, #00H
;--------------------------------------
MOV R5, #5
LOOP21: LCALL DELAY1S
; MOV P3, #0FFH ;讀P3前,先置1
; JNB P3.0, KEY ;若p3.0有按鍵,則跳KEY
DJNZ R5, LOOP21
;---------------------------------------
MOV R5, #4 ;黃閃
LOOP22: MOV P0, #00110110B;紅黃--綠黃
LCALL DELAY1S
; MOV P3, #0FFH ;讀P3前,先置1
; JNB P3.0, KEY ;若p3.0有按鍵,則跳KEY
MOV P0, #00010100B;紅--綠
LCALL DELAY1S
; MOV P3, #0FFH ;讀P3前,先置1
; JNB P3.0, KEY ;若p3.0有按鍵,則跳KEY
DJNZ R5, LOOP22
;-----------------------------------
MOV R5, #5
LOOP23: MOV P0, #01000001B ;綠--紅
LCALL DELAY1S
; MOV P3, #0FFH ;讀P3前,先置1
; JNB P3.0, KEY1 ;若p3.0有按鍵,則跳KEY
DJNZ R5, LOOP23
;-------------------------------------
MOV R5, #4 ;黃閃
LOOP24:
MOV P0, #01100011B ;綠黃--黃紅
LCALL DELAY1S
MOV P0, #01000001B ;綠--紅
LCALL DELAY1S
; MOV P3, #0FFH ;讀P3前,先置1
; JNB P3.0, KEY1 ;若p3.0有按鍵,則跳KEY
DJNZ R5, LOOP24
LJMP RGY
;********** TO延時1S *********
DELAY1S:
MOV R3, #10 ;#20 ;1T
LOOP1S:
LCALL KAIT0 ;2T
CESHI1S:
CJNE R6, #1, CESHI1S ;2T
MOV R6, #0 ;1T
DJNZ R3, LOOP1S ;2T
RET ;2T
;********* 開定時器T0 **********
KAIT0:
MOV TMOD, #11H ;1T
MOV TL0, #0CH ;#0AH ;1T
MOV TH0, #4CH ;1T
SETB ET0 ;1T
SETB EA ;1T
SETB TR0 ;1T
RET ;2T
;******* 計時器T0溢出中斷**********
T0ZHIYI:
CLR ET0
MOV R6, #1;
SETB ET0
RETI
;****** INT0-全紅中斷 *******
ALLRED:CLR EA
PUSH PSW
PUSH ACC
ORL PSW, #08H
MOV P0, #00010001B
; LCALL DELAY1S
LCALL DELAYR
POP ACC
POP PSW
RETI
;******** 全紅的延時 **********
DELAYR:MOV R3, #100 ;10 中斷延時 1 s
LOOPR3:MOV R4, #200
LOOPR2:MOV R2, #250
LOOPR1:DJNZ R2, LOOPR1
DJNZ R4, LOOPR2
DJNZ R3, LOOPR3
RET
;*********************
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -