📄 traffic1.asm
字号:
;相关知识内容请参阅S51E 文档内容模拟交通灯实验。
GEWEI EQU 21H
SHIWEI EQU 22H
SCANLED EQU 23H
RED EQU 24H
GREEN EQU 25H
YELLOW EQU 26H
NUMTIM EQU 27H
ORG 000H
JMP START
ORG 0BH
JMP TIMER0
ORG 100H
START:MOV SP,#40H
MOV R0,#20H
MOV R5,#20
CLR0:MOV @R0,#00H
INC R0
DJNZ R5,CLR0
MOV TMOD,#01H
MOV TH0,#HIGH(65536-5000)
MOV TL0,#LOW(65536-5000)
SETB TR0
MOV IE,#10000010B
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R3,#10
MOV R2,#3
MOV R1,#10
INI:MOV RED,#10
MOV YELLOW,#3
MOV GREEN,#10
loop:MOV P1,#11111100B
MOV NUMTIM,RED
LCALL DELAY1
DEC RED
DJNZ R3,LOOP
MOV R3,#10
MOV NUMTIM,#00H
LCALL DELAY1
loop1:MOV P1,#11110011B
MOV NUMTIM,YELLOW
LCALL DELAY1
DEC YELLOW
DJNZ R2,LOOP1
MOV R2,#3
MOV NUMTIM,#00H
LCALL DELAY1
loop2:MOV P1,#11001111B
MOV NUMTIM,GREEN
LCALL DELAY1
DEC GREEN
DJNZ R1,LOOP2
MOV R1,#10
MOV NUMTIM,#00H
LCALL DELAY1
MOV YELLOW,#3
loop3:MOV P1,#11110011B
MOV NUMTIM,YELLOW
LCALL DELAY1
DEC YELLOW
DJNZ R2,LOOP3
MOV R2,#3
MOV NUMTIM,#00H
LCALL DELAY1
LJMP INI
TIMER0:PUSH ACC
PUSH PSW
MOV TH0,#HIGH(65536-5000)
MOV TL0,#LOW(65536-5000)
MOV A,NUMTIM
LCALL BIN_BCD
MOV SHIWEI,A
MOV GEWEI,B
MOV A, SCANLED
CPL A
MOV SCANLED,A
JZ SCAN_L1
JMP SCAN_L2
SCAN_L1: MOV P2,#11110111B
MOV A,SHIWEI
JMP END_SCAN
SCAN_L2: MOV P2,#11111011B
MOV A,GEWEI
JMP END_SCAN
END_SCAN:MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
POP PSW
POP ACC
RETI
BIN_BCD:MOV B,#10
DIV AB
RET
DELAY1:MOV R6,#10
D1:MOV R5,#200
D2:MOV R4,#248
DJNZ R4,$
DJNZ R5,D2
DJNZ R6,D1
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -