?? tracficlight.asm
字號:
ORG 0000H
LJMP BEGIN
ORG 000BH
LJMP INT0
;-----------------------------------------
;初始化
;-------------------------------------------
ORG 0030H
BEGIN:mov sp,#60h
MOV TMOD,#01H ;置T0為方式1,16位定時器
MOV TH0,#3CH ;6MHZ的晶振,定時100MS
MOV TL0,#0B0H
MOV R3,#10 ;定時器計數次數
MOV 30H,#00H ;數碼管第一位顯示偏移值
MOV 31H,#00H ;數碼管第二位顯示偏移值
MOV 32H,#00H ;數碼管第三位顯示偏移值
MOV 33H,#00H ;數碼管第四位顯示偏移值
MOV 34H,#0 ;倒計時間
MOV 35H,#30 ;紅綠燈顯示時間
MOV 36H,#6 ;黃燈顯示時間
MOV R1,#00H ;燈的狀態
SETB EA
SETB ET0
START:LCALL KEY
MOV A,B
CJNE A,#0FFH,K_ONE
LJMP OUT
K_ONE:CJNE A,#00H,K_TWO
CJNE R1,#00H,STOP
MOV R1,#01H
MOV 34H,35H
SETB TR0
LJMP OUT
STOP: CLR TR0
MOV R1,#00H
MOV 34H,35H
LJMP OUT
K_TWO:CJNE A,#01H,K_THR
JB TR0 ,OUT
INC 35H
MOV A,35H
CJNE A,#100,N1
N1: JC N2
MOV A,35H
SUBB A ,#100
MOV 35H,A
N2: MOV 34H,35H
LJMP OUT
K_THR:CJNE A,#02H,OUT
JB TR0,OUT
DEC 35H
MOV A,35H
JNZ N3
MOV 35H,#99
N3: MOV 34H,35H
LJMP OUT
OUT:Lcall chang_display
S_0:CJNE R1,#00H,S_1
MOV P2,#11111111B
S_1:CJNE R1,#01H,S_2
MOV P2,#11111110B
S_2:CJNE R1,#02H,S_3
S_3:CJNE R1,#03H,S_4
MOV P2,#11111011B
S_4:CJNE R1,#04H,EXIT
EXIT:LCALL SHOW
LJMP START
;=========================================================================
SHOW:MOV R2,#0EFH
MOV R0,#30H
MOV R4,#04H
LP: MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
MOV A,R2
MOV P3,A
RL A
MOV R2,A
INC R0
LCALL DELAY1
DJNZ R4 ,LP
RL A
MOV P3,A
RET
TAB :DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
;=========================================================================
KEY: LCALL KS
LCALL DELAY
LCALL KS
JZ KOUT
L_ONE:
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R5,A
JB ACC.4,L_TWO
MOV B,#00H
JMP K_O
L_TWO:
JB ACC.5,L_THR
MOV B,#01H
JMP K_O
L_THR:
JB ACC.6,K_O
MOV B,#02H
JMP K_O
KOUT: MOV B,#0FFH
K_O: MOV A,P1
XRL A,R5
JZ K_O
RET
DELAY:MOV R6,#0BH
LOOP1:MOV R7,#0FFH
LOOP2:DJNZ R7,LOOP2
DJNZ R6,LOOP1
RET
;===============================================================
DELAY1:
MOV R7,#0FFH
LOOP3:DJNZ R7,LOOP3
RET
;===============================================================
KS: MOV A,#0FH
MOV P1,A
MOV A,P1
CPL A
ANL A,#0FH
RET
;==============================================================
chang_display:
MOV B,34H
MOV A,#10
XCH A,B
DIV AB
MOV 30H,A
MOV 32H,A
MOV 31H,B
MOV 33H,B
RET
;==============================================================
INT0:DJNZ R3,NEXT
MOV R3,#10
CJNE R1,#02,QIE_1
CPL P2.1
LJMP QIE
QIE_1:CJNE R1,#04,QIE
CPL P2.1
QIE:DJNZ 34H,NEXT
T_1:CJNE R1,#01H,T_2
MOV R1,#02H
MOV P2,#11111101B
mov 34H,36H
LJMP NEXT
T_2:CJNE R1,#02H,T_3
MOV R1,#03H
MOV 34H,35H
LJMP NEXT
T_3:CJNE R1,#03H,T_4
MOV R1,#04H
MOV P2,#11111101B
MOV 34H,36H
LJMP NEXT
T_4:CJNE R1,#04H,NEXT
MOV R1,#01H
MOV 34H,35H
NEXT:MOV TH0,#3CH
MOV TL0,#0B0H
RETI
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -