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

📄 times.asm

📁 该程序为时钟响应程序
💻 ASM
字号:
        ORG 	0000H
	LJMP 	START
	ORG	001BH	         ;定时计数器1中断入口地址	
	LJMP	CLOCK
	ORG	0030H   
START:
    MOV	SP , #50H       ;设置堆栈
	MOV	TL1 , #018H	    ;FOSC=6MHZ,则一个机器周期为2us
	MOV	TH1 , #0FCH      ;3CB7H=155430  65536-15543=4993,下一个机器周期响应中断
	MOV	20H , #13H	    ;一时存储单元,可设置起始时间,应小于24时
	MOV	21H , #16H	    ;一分存储单元,可设置起始时间,应小于59分
	MOV	22H , #22H	    ;一秒存储单元,可设置起始时间,应小于59秒
	MOV	23H , #00H	    ;一位0.1秒存储单元			
	MOV	30H , #01H	    ;一时十位显存
	MOV	31H , #02H	    ;一时个位显存
	MOV	32H , #03H	    ;一分十位显存
	MOV	33H , #04H	    ;一分个位显存
	MOV	34H , #05H	    ;一秒十位显存 
	MOV	35H , #06H	    ;-秒个位显存 
	MOV	IE , #10001000B ;开定时计数器1中断 
	MOV	IP ,#00001000B  ;中断优先级设计,可有可无 
	MOV	TMOD ,#00010000B	; 定时计数器1工作在方式1
	SETB	TR1		    ;启动T1 

LOOP:
 	LCALL	HEX2D
	LCALL	DIS             ;显示
	SJMP	LOOP
HEX2D:
    PUSH    PSW	 
	CLR  RS0
	CLR  RS1
	MOV	R7 , #03H	 
	MOV	R1 , #30H	 
	MOV	R0 , #20H	 ;复位后默认工作寄存器组0 
LOO_A:
	MOV	A , @R0
	MOV	B , #0AH
	DIV	AB
	MOV	@R1 , A
	INC	R1
	MOV	@R1 , B
	INC	R0
	INC	R1
	DJNZ	R7 , LOO_A
	POP	PSW
	RET

DIS:
    CLR  C	
	PUSH	PSW	            ;保护工作寄存器 
	PUSH    ACC
	SETB	RS0	            ; 换为工作寄存器组1
	CLR     RS1
	MOV	R0 , #30H		; 显示首地址
	MOV	R2 , #20H		; 位显控制信号
   	MOV	DPTR , #TAB		; 把表首地址送DPTR
LS2:  MOV   A,R2
      CPL  A
      MOV  P1,A
      MOV	A , @R0		; (R0)=(30H)
	MOVC	A , @A+DPTR		; 查表值送A
 	CPL   A
      ;MOV	  P1, R2		; R2=20H从高位开始
  	MOV   P0,A	
DELAY:  MOV  R4,#05H   ; 
LOO_P:	MOV	 R5,#18H
LOOP1:	NOP
		NOP
        DJNZ	R5,	LOOP1   ;第一次为56H-00H,以后为FFH-00H 
		DJNZ	R4,LOO_P
    MOV  A,R2
	RRC	A			;带进位位右移一位 
	MOV	R2 , A		;A值送R2,为下一位显示地址 
	INC	R0			;R0加1,30H+1=31H 
	JNZ	LS2			;累加器A内容不为0转移,显示下一位,循环  
	POP  ACC
	POP PSW			   ;恢复工作寄存器组0 
	RET


CLOCK:  CLR TR1 			   ;单机器周期指令,2us 
	 MOV TL1,#018H		   ;单机器周期指令,2us  
       MOV TH1,#0FCH            ;恢复初值,单机器周期指令,2us	  
	 SETB TR1			   ;单机器周期指令,2us 
	  PUSH PSW
        PUSH ACC
        INC 23H                 ;0.1秒加1 
        MOV A,23H
        CJNE A,#0AH,DONE        ;1秒到了没? 
        MOV 23H,#00H            ;清0.1秒 
        INC 22H                   ;秒存储单元 
        MOV A,22H 
        CJNE A,#3CH,DONE        ;60秒到? 
        MOV 22H,#00H            ;秒单元清零 
        INC 21H			  ;21H-分存储单元 
        MOV A,21H
        CJNE A,#3CH,DONE        ;60分到? 
        MOV 21H,#00H            ;分单元清零
        INC 20H			  ;20H-时存储单元 
        MOV A ,20H
        CJNE A,#18H,DONE        ;24小时到没? 
        MOV 20H,#00H            ;时单元清零 
DONE:	POP  ACC
		POP  PSW
   	    RETI 

TAB:	DB 0C0H,0F9H,0A4H,0B0H,99H,92H		;共阳极 0~1~2~3~4~5
	DB 82H,0F8H,80H,90H,88H,83H,0C6H		;6~7~8~9~A~B~C
	DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH	;D~E~F~灭~P.~H~.~
	END

⌨️ 快捷键说明

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