📄 at89s52.asm
字号:
ORG 0000H
CLK1 BIT P2^2 ;把P1^6命名为CLK
DAT BIT P2^1 ;把P1^7命名为DAT
CLK2 BIT P2^0
CLR P1^0
CLR P1^1
CLR P1^2
CLR P1^3
MOV DPTR,#TAB ;表首地址送DPTR
STAR: MOV R0,#0 ;把数据0放入R0,给一个偏移量的初值
UP: MOV A,R0 ;再把R0中的数送给A
MOVC A,@A+DPTR ;从表中把要处理的数据找出来
CJNE A,#0DH,EXIT ;是否为结束符号0DH,如果是,则往下执行,如果不是,则跳到EXIT
SJMP STAR
EXIT: CLR CLK1 ;把CLK置低
CLR CLK2
MOV R7,#8 ;移位次数8次
LOOP: RLC A ;左移A中数
MOV DAT,C ;把C中的数送入DAT
NOP ;空操作
NOP ;空操作,延时
SETB CLK1 ;把CLK置高,使数据DAT写入移位寄存器
NOP ;空操作,延时
NOP ;空操作,延时
CLR CLK1 ;把CLK置低
DJNZ R7,LOOP ;R7不为0,转LOOP执行
SETB CLK2
INC R0 ;R0加1
LCALL DELAY ;调用延时子程序
SJMP UP ;转到UP
TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0DH
DELAY: ;延时子程序,就是上节课中的延时子程序
MOV R1,#100 ;把数据50送入寄存器R1
D1: MOV R2,#100 ;把数据100送入R2
D2: MOV R3,#100 ;把数据100送入R3
DJNZ R3,$ ;把R3数据自动减1,为0往下执行
DJNZ R2,D2 ;把R2数据自动减1,为0往下执行
DJNZ R1,D1 ;把R1数据自动减1,为0往下执行
RET ;返回
END ;程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -