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

📄 at89s52.asm

📁 用单片 机做的时钟
💻 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 + -