📄 temp2.asm
字号:
;-------------------------------------TRAFFIC PROGRAM-----------------------------------
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP PIPO
ORG 0030H
MAIN: MOV SP,#5FH
MOV 40H,#00H
MOV 41H,#25H
MOV TMOD,#01H
MOV TH0,#0DCH
MOV TL0,#00H
SETB EA
SETB ET0
MOV 42H,#00H
MOV R6,#00H
MOV 44H,#00H
LCALL INIT
LCALL FIRST
MOV DPTR,#TABLEx
ACALL DISPLAY
ACALL SECOND
MOV DPTR,#TABLE2x
ACALL DISPLAY
INKEY:
MOV P3,#0FFH
JB P3.3,NEXT1
QUDOU1:
ACALL BUZZER
JNB P3.3 ,QUDOU1
LJMP LCDDIS
NEXT1:mov p3,#0ffh
JB P3.4,NEXT2
QUDOU2:ACALL BUZZER
JNB P3.4,QUDOU2
LJMP LEDDIS
NEXT2:mov p3,#0ffh
MOV P2,#0FEH
JB P3.5 ,NEXT3
QUDOU3:ACALL BUZZER
JNB P3.5 ,QUDOU3
LJMP ALL
NEXT3:mov p3,#0ffh
MOV P2,#0FDH
JB P3.5,inkey
QUDOU4:ACALL BUZZER
JNB P3.5,QUDOU4
LJMP main
ALL:
SETB TR0
LCALL INIT
LCALL FIRST
MOV DPTR,#TABLE1
ACALL DISPLAY
ACALL SECOND
MOV DPTR,#TABLE2
ACALL DISPLAY
CYCLE:ACALL THIRD
MOV A,41H
SWAP A
ANL A,#0FH
ACALL TABLE
ACALL WRDATA
LCALL DELAY
MOV A,41H
ANL A,#0FH
ACALL TABLE
ACALL WRDATA
LCALL DELAY
aa:
MOV P0,#0FFH
MOV A,41H
ANL A,#0FH
ACALL TABLEK
MOV P2,A
CLR P0.6
ACALL DELAY
SETB P0.6
MOV A,41H
SWAP A
ANL A,#0FH
ACALL TABLEK
MOV P2,A
CLR P0.5
ACALL DELAY
SETB P0.5
BB0: MOV R7,42H
CJNE R7,#01H,BB1
MOV P2,#0FFH
MOV A,44H
JB ACC.0, BULIAO1
SETB P0.7
CLR P2.4
CLR P2.0
CLR P0.7
BULIAO1:
BB1: MOV R7,42H
CJNE R7,#02H,BB2
SETB P0.7
MOV P2,#0FFH
CLR P2.2
CLR P2.3
CLR P0.7
BB2: MOV R7,42H
CJNE R7,#03H,BB3
MOV A,44H
MOV P2,#0FFH
JB ACC.0, BULIAO
SETB P0.7
CLR P2.1
CLR P2.3
CLR P0.7
BULIAO:
BB3: MOV R7,42H
CJNE R7,#00H,OUT1
SETB P0.7
MOV P2,#0FFH
CLR P2.5
CLR P2.0
CLR P0.7
OUT1:
AJMP CYCLE
TABLEK:INC A
MOVC A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
LCDDIS:
SETB TR0
LCALL INIT
mov a,#01h
acall wrcon
LCALL FIRST
MOV DPTR,#TABLE1
ACALL DISPLAY
ACALL SECOND
MOV DPTR,#TABLE2
ACALL DISPLAY
acall delay
LCDDIS1:
ACALL THIRD
MOV A,41H
SWAP A
ANL A,#0FH
ACALL TABLE
ACALL WRDATA
LCALL DELAY
MOV A,41H
ANL A,#0FH
ACALL TABLE
ACALL WRDATA
LCALL DELAY
aB00: MOV R7,42H
CJNE R7,#01H,aB111
MOV A,44H
JB ACC.0, aULIAO111
SETB P0.7
MOV P2,#0FFH
CLR P2.4
CLR P2.0
CLR P0.7
CPL P1.0
ACALL DELAY
SETB P0.7
aULIAO111:
aB111: MOV R7,42H
CJNE R7,#02H,aB22
SETB P0.7
MOV P2,#0FFH
CLR P2.2
CLR P2.3
CLR P0.7
ACALL DELAY
SETB P0.7
aB22: MOV R7,42H
CJNE R7,#03H,aB33
MOV A,44H
JB ACC.0, aULIAOP
SETB P0.7
MOV P2,#0FFH
CPL P1.0
CLR P2.1
CLR P2.3
CLR P0.7
ACALL DELAY
SETB P0.7
aULIAOP:
aB33: MOV R7,42H
CJNE R7,#00H,aUT2
SETB P0.7
MOV P2,#0FFH
CLR P2.5
CLR P2.0
CLR P0.7
LCALL DELAY
SETB P0.7
aUT2:
AJMP LCDDIS1
LEDDIS:
acall init
SETB TR0
mov p0,#0ffh
LEDDIS1:
MOV A,41H
ANL A,#0FH
ACALL tableu
MOV P2,A
CLR P0.6
ACALL DELAY
SETB P0.6
MOV A,41H
SWAP A
ANL A,#0FH
ACALL tableu
MOV P2,A
CLR P0.5
ACALL DELAY
SETB P0.5
cB00: MOV R7,42H
CJNE R7,#01H,cB111
MOV A,44H
JB ACC.0, cULIAO111
SETB P0.7
MOV P2,#0FFH
CLR P2.4
CLR P2.0
CLR P0.7
CPL P1.0
ACALL DELAY
SETB P0.7
cULIAO111:
cB111:
MOV R7,42H
CJNE R7,#02H,cB22
SETB P0.7
MOV P2,#0FFH
CLR P2.2
CLR P2.3
CLR P0.7
ACALL DELAY
SETB P0.7
cB22: MOV R7,42H
CJNE R7,#03H,cB33
MOV A,44H
JB ACC.0,cULIAOP
SETB P0.7
MOV P2,#0FFH
CPL P1.0
CLR P2.1
CLR P2.3
CLR P0.7
ACALL DELAY
SETB P0.7
cULIAOP:
cB33: MOV R7,42H
CJNE R7,#00H,cUT2
SETB P0.7
MOV P2,#0FFH
CLR P2.5
CLR P2.0
CLR P0.7
LCALL DELAY
SETB P0.7
cUT2:
LJMP LEDDIS1
tableu:
INC A
MOVC A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
BUZZER:
CLR P1.0
lCALL DELAY
SETB P1.0
RET
NEXTP:
MOV A,R3
MOVC A,@A+DPTR
LCALL WRDATA
INC R3
DJNZ R2,NEXTP
RET
tablex:
db "please select"
db"#"
table2x:
db"1:lcd,2:led,3:all"
db"#"
INIT:
MOV A,#01H
ACALL WRCON
MOV A,#38H
ACALL WRCON
MOV A,#38H
ACALL WRCON
MOV A,#38H
ACALL WRCON
MOV A,#38H
ACALL WRCON
MOV A,#0CH
ACALL WRCON
MOV A,#01H
ACALL WRCON
MOV A,#06H
ACALL WRCON
MOV A,#0CH
ACALL WRCON
RET
DISPLAY:
MOV R1,#00H
NEXT:
MOV A, R1
MOVC A, @A+DPTR
CJNE A, #23H,DSP
RET
DSP:
ACALL WRDATA
INC R1
AJMP NEXT
FIRST:
MOV A,#10000000B
ACALL WRCON
RET
SECOND:
MOV A,#11000000B
ACALL WRCON
RET
THIRD:
MOV A,#11001000B
ACALL WRCON
RET
WRCON:
ACALL BUSY
MOV P3,#11110001B
NOP
SETB P3.3
MOV P0,A
NOP
CLR P3.3
RET
WRDATA:
ACALL BUSY
MOV P3,#11110011B
NOP
SETB P3.3
MOV P0,A
NOP
CLR P3.3
RET
BUSY:
PUSH ACC
WAIT:
MOV P3,#11110101B
NOP
SETB P3.3
MOV A,P0
JB ACC.7,WAIT
POP ACC
RET
DELAY: PUSH PSW
MOV R3,#10H
DELAY0:MOV R4,#50H
DELAY1:DJNZ R4,DELAY1
DJNZ R3,DELAY0
POP PSW
RET
;DELAY12:
;MOV R6,#80H
;D1:
; MOV R7,#80H
;DJNZ R7,$
;DJNZ R6,D1
TABLE1:
DB "Triffic program:"
DB "#"
TABLE2:
DB "time is:"
DB "#"
TABLE: INC A
MOVC A, @A+PC
RET
DB "0123456789"
PIPO: INC R6
CJNE R6,#32H,NEXT1O
MOV R6,#00H
INC 44H
NEXT1O:PUSH PSW
PUSH ACC
MOV TH0,#0DCH
MOV TL0,#00H
INC 40H
MOV A,40H
CJNE A,#64H,RET0
MOV 40H,#00H
MOV A,41H
DEC A
KK: CJNE A,#1FH,KK0
SUBB A,#06H
AJMP KK1
KK0: CJNE A,#0FH,KK1
SUBB A,#06H
KK1: MOV 41H,A
KK2: CJNE A,#0FFH,RET0
MOV R7,42H
AA0: CJNE R7,#00H,AA1
MOV 41H,#05H
INC 42H
AA1: CJNE R7,#01H,AA2
MOV 41H,#15H
INC 42H
AA2: CJNE R7,#02H,AA3
MOV 41H,#05H
INC 42H
AA3: CJNE R7,#03H,RET0
MOV 41H,#25H
MOV 42H,#00H
RET0: POP ACC
POP PSW
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -