📄 at89s52.asm
字号:
ORG 0000H ;程序开始地址
CLK1 BIT P2^2 ;把P2^2命名为CLK1
DAT BIT P2^1 ;把P2^1命名为DAT
CLK2 BIT P2^0 ;把P2^0命名为CLK2
EN1 BIT P1^0 ;数码管1使能信号,低电平显示,命名为EN1
EN2 BIT P1^1 ;数码管2使能信号,低电平显示,命名为EN2
EN3 BIT P1^2 ;数码管3使能信号,低电平显示,命名为EN3
EN4 BIT P1^3 ;数码管4使能信号,低电平显示,命名为EN4
A_BIT EQU 20H ;个位数存放处
B_BIT EQU 21H ;十位数存放处
C_BIT EQU 22H ;百位数存放处
D_BIT EQU 23H ;千位数存放处
MOV P1,#0FFH ;P1口置1,关闭数码管
STAR: MOV A,#0 ;初始化
MOV A_BIT,A ;初始化
MOV B_BIT,A ;初始化
MOV C_BIT,A ;初始化
MOV D_BIT,A ;初始化
STLOP: ACALL DISPLAY ;调用显示子程序
INC A_BIT ;缓冲区加一.
MOV A,A_BIT
CJNE A,#10,STLOP
MOV A_BIT,#0
INC B_BIT ;缓冲区加一.
MOV A,B_BIT
CJNE A,#6,STLOP
MOV B_BIT,#0
INC C_BIT ;缓冲区加一.
MOV A,C_BIT
CJNE A,#10,STLOP
MOV C_BIT,#0
INC D_BIT ;缓冲区加一.
MOV A,D_BIT
CJNE A,#6,STLOP
MOV D_BIT,#0
LJMP STLOP ;循环显示
DISPLAY: MOV DPTR,#TAB
MOV R0,#4
DPLL: MOV R1,#100
DPLOP: MOV A,A_BIT
MOVC A,@A+DPTR ;查表取欲显示的数据
CLR CLK1 ;把CLK置低
CLR CLK2
MOV R7,#8 ;移位次数8次
LOOP001: RLC A ;左移A中数
MOV DAT,C ;把C中的数送入DAT
NOP ;空操作
NOP ;空操作,延时
SETB CLK1 ;把CLK置高,使数据DAT写入移位寄存器
NOP ;空操作,延时
NOP ;空操作,延时
CLR CLK1 ;把CLK置低
DJNZ R7,LOOP001 ;R7不为0,转LOOP执行
SETB CLK2
CLR EN1
ACALL D1MS
SETB EN1
MOV A,B_BIT
MOVC A,@A+DPTR ;显示十位.
CLR CLK1 ;把CLK置低
CLR CLK2
MOV R7,#8 ;移位次数8次
LOOP002: RLC A ;左移A中数
MOV DAT,C ;把C中的数送入DAT
NOP ;空操作
NOP ;空操作,延时
SETB CLK1 ;把CLK置高,使数据DAT写入移位寄存器
NOP ;空操作,延时
NOP ;空操作,延时
CLR CLK1 ;把CLK置低
DJNZ R7,LOOP002 ;R7不为0,转LOOP执行
SETB CLK2
CLR EN2
ACALL D1MS
SETB EN2
MOV A,C_BIT
MOVC A,@A+DPTR ;查表取欲显示的数据
CLR CLK1 ;把CLK置低
CLR CLK2
MOV R7,#8 ;移位次数8次
LOOP003: RLC A ;左移A中数
MOV DAT,C ;把C中的数送入DAT
NOP ;空操作
NOP ;空操作,延时
SETB CLK1 ;把CLK置高,使数据DAT写入移位寄存器
NOP ;空操作,延时
NOP ;空操作,延时
CLR CLK1 ;把CLK置低
DJNZ R7,LOOP003 ;R7不为0,转LOOP执行
SETB CLK2
CLR EN3
ACALL D1MS
SETB EN3
MOV A,D_BIT
MOVC A,@A+DPTR ;查表取欲显示的数据
CLR CLK1 ;把CLK置低
CLR CLK2
MOV R7,#8 ;移位次数8次
LOOP004: RLC A ;左移A中数
MOV DAT,C ;把C中的数送入DAT
NOP ;空操作
NOP ;空操作,延时
SETB CLK1 ;把CLK置高,使数据DAT写入移位寄存器
NOP ;空操作,延时
NOP ;空操作,延时
CLR CLK1 ;把CLK置低
DJNZ R7,LOOP004 ;R7不为0,转LOOP执行
SETB CLK2
CLR EN4
ACALL D1MS
SETB EN4
DJNZ R1,DPLOP ;;100次没完循环
DJNZ R0,DPLL ;4个100次没完循环
RET
D1MS: MOV R7,#255
DJNZ R7,$
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -