⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at89s52.asm

📁 数码管动态0--9
💻 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 + -