myclock.asm

来自「用51单片机实现数字钟 利用数码管、I/O口实现数字钟的计数功能」· 汇编 代码 · 共 111 行

ASM
111
字号
;已使用的内存空间:-----------------------------
;80H , 81H ,82H
;31H -- 38H
;30H
;5BH
;
;
;----------------------------------------------
COUNT EQU 5BH



ORG 0000H
		LJMP INIT
;-----------------------------------------------

ORG 000BH
		LJMP TIME

;-----------------------------------------------

ORG 0050H
INIT:	
		MOV TMOD , #01H
		SETB EA
		SETB ET0
		MOV TH0 , #0D8H
		MOV TL0 , #0F0H
		SETB TR0
		
		MOV R0 , #31H
AG:		MOV @R0 , #00H
		INC R0
		CJNE R0 , #39H , AG
		MOV 33H , #0AH
		MOV 36H , #0AH	

		MOV COUNT , #00H

		MOV DPTR , #TABLE

		SETB TR0
;-----------------------------------------------------
MAIN:	
LP1:	MOV P3 , #00H		
		MOV 30H , #00H		;用30H内存单元保存当前P3的输出
		MOV R0 , #38H		
LP0:	MOV A , @R0
		MOVC A , @A+DPTR
		MOV P1 , A
		ACALL DELAY
		DEC R0
		MOV A , 30H
		ADD A , #04H
		MOV 30H , A
		MOV P3 , A 
		CJNE A , #20H,  LP0
		AJMP LP1
;-------------------------------------------------------

DELAY:	MOV R2 , #1FH
DL1:	MOV R3 , #1FH
		DJNZ R3 , $
		DJNZ R2 , DL1
		RET
;------------------------------------------------------
TIME:	PUSH ACC
		PUSH PSW
		SETB RS0
		MOV TH0 , #0D8H
		MOV TL0 , #0F0H
		INC COUNT
		MOV A , COUNT
		CJNE A , #100 , RT
		MOV COUNT , #00H
		INC 31H
		MOV A , 31H
		CJNE A , #10 , RT
		MOV 31H , #00H
		INC 32H
		MOV A , 32H
		CJNE A , #6 , RT
		MOV 32H , #00H
		INC 34H
		MOV A , 34H
		CJNE A , #9 , RT
		MOV 34H , #00H
		INC 35H
		MOV A , 35H
		CJNE A , #6 , RT
		MOV 35H , #00H
		INC 37H
		MOV A , 37H
		CJNE A , #5 , RT
		MOV 37H , #00H
		INC	38H
		MOV A , 38H
		CJNE A ,#3 , RT
		MOV 38H , #00H

RT:		POP PSW
		POP ACC
		RETI
			
TABLE:	DB 0C0H , 0F9H , 0A4H , 0B0H , 99H ,92H ,82H ,0F8H	;P1口输出到数码管的表值
		DB 80H , 90H , 0BFH
 
		END


⌨️ 快捷键说明

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