📄 jiaotongled1.asm
字号:
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 ;红灯亮,亮10秒
MOV NUMTIM,RED
LCALL DELAY1
DEC RED
DJNZ R3,LOOP
MOV R3,#10
MOV NUMTIM,#00H
LCALL DELAY1
loop1:MOV P1,#11110011B ;黄灯亮,亮3秒
MOV NUMTIM,YELLOW
LCALL DELAY1
DEC YELLOW
DJNZ R2,LOOP1
MOV R2,#3
MOV NUMTIM,#00H
LCALL DELAY1
loop2:MOV P1,#11001111B ;绿灯亮,亮10秒
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 ;黄灯又亮,亮3秒
MOV NUMTIM,YELLOW
LCALL DELAY1
DEC YELLOW
DJNZ R2,LOOP3
MOV R2,#3
MOV NUMTIM,#00H
LCALL DELAY1
LJMP INI ;跳到前面,循环操作
TIMER0:PUSH ACC ;定时器0服务子程序
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,#01111111B
MOV A,SHIWEI
JMP END_SCAN
SCAN_L2: MOV P2,#10111111B
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 + -