📄 traficlcd.asm
字号:
;-------------------------------------交通灯程序-----------------------------------
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP PIPO
ORG 0030H
MAIN: MOV SP,#5FH ;设置堆栈指针为30H
MOV 40H,#00H ;要求的计数溢出次数,即循环次数
MOV 41H,#25H ;存倒计时数
MOV TMOD,#01H ;设置定时器0工作方式1
MOV TH0,#0DCH ;定初值
MOV TL0,#00H ;定时10MS
SETB EA ;开总中断,(总闸)
SETB ET0 ;允许定时中断
SETB TR0 ;开始计时
MOV 42H,#00H ;用此地址区来存显示的秒数
MOV R6,#00H ;控制闪烁与不闪烁
MOV 44H,#00H
ACALL INIT
ACALL FIRST
MOV DPTR,#TABLE1
ACALL DISPLAY
ACALL SECOND
MOV DPTR,#TABLE2
ACALL DISPLAY
XX: 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
AJMP XX
INIT:
MOV A,#01H
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:
MOV R6,#80H
D1:
MOV R7,#80H
DJNZ R7,$
DJNZ R6,D1
RET
TABLE1:
DB "Triffic program:"
DB "#"
TABLE2:
DB "time is:"
DB "#"
TABLE: INC A
MOVC A, @A+PC
RET
DB "0123456789"
PIPO: INC R6 ;1秒闪烁二次
CJNE R6,#32H,NEXT1
MOV R6,#00H
INC 44H
NEXT1:PUSH PSW ;10MS已到
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 ;到1F时减6
SUBB A,#06H
AJMP KK1
KK0: CJNE A,#0FH,KK1 ;到0F时减6
SUBB A,#06H
KK1: MOV 41H,A
KK2: CJNE A,#0FFH,RET0
MOV R7,42H
AA0: CJNE R7,#00H,AA1 ;控制25S到5S到15S到5S的倒计时循环显示
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 + -