yy1.a51
来自「用单片机进行定时交通信号灯控制」· A51 代码 · 共 66 行
A51
66 行
ORG 00H
AJMP MAIN
A1 EQU 2AH
A2 EQU 2BH
F EQU 2CH
ORG 2AH
MAIN:MOV A1,#1FH ;设置时间显示初值
MOV A2,#0F3H ;A线放行,B线禁止
MOV P3,A2
MOV R7,#19H ;延时秒数
MAIN1:LCALL DEL1 ;1s延时子程序
DJNZ R7,MAIN1
MOV A2,#0F5H ;A线警告,B线禁止
MOV P3,A2
MOV R7,#05H ;延时秒数
MAIN2:LCALL DEL1
DJNZ R7,MAIN2
MOV A2,#0DEH ;A线禁止,B线放行
MOV A1,#1FH ;设置时间显示初值
MOV P3,A2
MOV R7,#19H ;延时秒数
MAIN3:LCALL DEL1
DJNZ R7,MAIN3
MOV A2,#0EEH ;A线禁止,B线警告
MOV P3,A2
MOV R7,#05H ;延时秒数
MAIN4:LCALL DEL1
DJNZ R7,MAIN4
AJMP MAIN ;循环
DEL1:DEC A1 ;1s延时子程序DEL1,显示秒数减一
MOV A,A1
MOV B,#0AH
DIV AB ;秒数转为十进制
MOV DPTR,#TABLE
MOVC A,@A+DPTR ;查表个位数的字形码
MOV R1,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR ;查表十位数的字形码
MOV R2,A
MOV R6,#250 ;设置循环次数
LOOP:MOV A,R2 ;十位数的字形码
MOV F,#01H ;位控码
ACALL DISP ;调用显示子程序
MOV A,R1 ;个位数的字形码
MOV F,#02H ;位控码
ACALL DISP
MOV R4,#250
DJNZ R4,$
MOV R3,#250
DJNZ R3,$
DJNZ R6,LOOP ;循环
RET ;返回
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;十进制数字形码表
DISP:MOV R0,#250 ; 显示子程序,设置循环次数
MOV R5,A
DISP1:MOV A,R5
MOV P1,A ;字形码输出
MOV A,F
MOV P2,A ;位控制码输出
DJNZ R0,DISP1 ;循环
RET ;返回
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?