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

📄 clock1.asm

📁 单片机mCS51实现的数字时钟程序
💻 ASM
字号:
;-----------------
;复位入口
      ORG 0000H
      LJMP START
;-----------------
;定时器0定时到,中断入口
      ORG 000BH
      LJMP CT_00
;-----------------
; 主程序
      ORG 0030H
START:MOV  SP,#50H		;置堆栈50h单元开始           
      MOV  IE,#10000010B      ;定时计数器中断开
      MOV  IP,#00000010B      ;定时计数器1优先于0
      MOV  TMOD,#00000001B    ;计数器1:方式2,定时器0:方式1
      MOV  TL0,#0F0H          
      MOV  TH0,#0D8H          ;定时器0定时10ms
      MOV  2FH,#00H           ;计数器0,中断次数标识
      MOV 30H,#12
      mov  31h,#34
      mov  32h,#56
      LCALL HEX2D 
      SETB TR0                ;定时计数器0启动工作 
L00:  LCALL DIS 
      LJMP  L00
     
;-----------------
HEX2D:MOV R7,#03H
      MOV R1,#40H
      MOV R0,#30H
LOO_A:MOV A,@R0
      MOV B,#10
      DIV AB
      MOV @R1,A
      MOV A,B
      INC R1
      MOV @R1,A
      INC R0
      INC R1 
      DJNZ R7,LOO_A        
      RET	
;-----------------
;显示子程序	
DIS:  PUSH PSW
      SETB PSW.4 
      MOV  R0,#40H  	;指向显示缓冲区6字节
      MOV  R7,#40H   	;数码管的字位码
      MOV  R3,#06H       ;循环6次控制
LED0: MOV  A,@R0		;确定字形代码
      MOV  DPTR,#TAB    ;字型译码表首址
      MOVC A,@A+DPTR
      MOV  R1,#0DCH     ;指向字形口  
 	MOVX @R1,A		;输出字形代码
;      INC  R1      	;指向字位口
      PUSH 10H
      MOV R0,#0DDH
	MOV  A,R7		;从最高位开始
      RR   A            ;显示右移一位 
      MOV R7,A 
	MOVX @R0,A		;输出字位代码
      MOV  R4,#05H	;确定延时常数
	ACALL DEYS		;调延时子程序
      POP 10H
      INC R0            ;修改显缓指针 
      DJNZ R3,LED0      ;循环演示
      POP PSW		
      RET 
;-----------------
;延时子程序
DEYS:	PUSH 14H		
DEY1:	PUSH 14H
	DJNZ R4,$
	POP 14H
	DJNZ R4,DEY1
	POP 14H
	DJNZ R4,DEYS
	RET		
;-----------------
;定时器0中断服务程序
CT_00:PUSH PSW
      CLR PSW.4
      CLR  TR0
      MOV  TL0,#0F0H          
      MOV  TH0,#0D8H    ;重装初值,定时10ms
      SETB TR0          ;定时计数器0启动工作
      INC 2FH
      MOV R0,#2FH
      MOV R1,#32H         ;指向时间(秒分时)缓冲区32H、31H、30H 
      CJNE @R0,#100,INTO  ;1S未到,转 
      MOV  @R0,#00H       ;1S到,标识清零
      INC 32H             ;秒加
      CJNE @R1,#60,INTO   ;1分未到,转
      MOV 32H,#00H        ;秒清零
      INC 31H             ;分加
      DEC R1              ;
      CJNE @R1,#60,INTO   ;
      MOV 31H,#00H        ;
      INC 30H             ;
      DEC R1              ;
      CJNE @R1,#24,INTO   ;
      MOV 30H,#00H        ;
INTO: LCALL HEX2D
      POP PSW
      RETI

TAB:  DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -