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

📄 数字钟.asm

📁 单片机设计的数字钟程序。初学的可以看看
💻 ASM
字号:
TIMES   EQU     30H
TIMEM   EQU     31H
TIMEH   EQU     32H
CLKM    EQU     33H
CLKH    EQU     34H
UP      EQU     35H
LED1    EQU     3AH
LED2    EQU     3BH
LED3    EQU     3CH
LED4    EQU     3DH
LED5    EQU     3EH
LED6    EQU     3FH


        ORG     0000H
        AJMP    START
        ORG     000BH
        AJMP    T0PRO

START:  MOV     SP,#60H
        CLR     A
        CLR     P1.0
        MOV     TIMES,A
        MOV     TIMEM,A
        MOV     TIMEH,A
        MOV     CLKM,A
        MOV     CLKH,#12
        MOV     UP,A

        MOV     A,#89H
        MOV     DPTR,#7FFFH
        MOVX    @DPTR,A

        MOV     TMOD,#01H
        MOV     TH0,#3CH
        MOV     TL0,#0B0H

        SETB    EA
        SETB    ET0
        CLR     TF0
        SETB    TR0

MAIN:   LCALL   DISPLAY
        LCALL   SCAN
        JNB     ACC.0,K4
        ACALL   MSET
K4:     JNB     ACC.3,MAIN
        LCALL   CLOCK
        AJMP    MAIN
;分钟设置
MSET:   LCALL   DISPLAY
        LCALL   SCAN
        JB      ACC.3,MSET_END  ;第四键按下直接返回
        JNB     ACC.2,MK2       ;第三键按下分钟-1
        ACALL   SUBM
        AJMP    MSET
MK2:    JNB     ACC.1,MK1       ;第二键按下分钟+1
        ACALL   ADDM
        AJMP    MSET
MK1:    JNB     ACC.0,MSET_END  ;第一键按下转小时设置
        ACALL   HSET
        AJMP    MSET
MSET_END:RET

;小时设置
HSET:   LCALL   DISPLAY
        LCALL   SCAN
        JB      ACC.3,HSET_END      ;第四键按下直接返回
        JNB     ACC.2,HK2       ;第三键按下小时-1
        ACALL   SUBH
        AJMP    HSET
HK2:    JNB     ACC.1,HK1       ;第二键按下小时+1
        ACALL   ADDH
        AJMP    HSET
HK1:    JNB     ACC.0,HSET_END      ;第一键按下返回分钟设置
HSET_END: RET

SUBM:   CLR     C
        MOV     A,TIMEM
        SUBB    A,#1
        MOV     TIMEM,A
        JNC     SUBM_END
        MOV     TIMEM,#59
SUBM_END:RET

ADDM:   INC     TIMEM
        MOV     A,TIMEM
        CJNE    A,#60,ADDM_END
        MOV     TIMEM,#00
ADDM_END:RET

SUBH:   CLR     C
        MOV     A,TIMEH
        SUBB    A,#1
        MOV     TIMEH,A
        JNC     SUBH_END
        MOV     TIMEH,#23
SUBH_END:RET

ADDH:   INC     TIMEH
        MOV     A,TIMEH
        CJNE    A,#24,ADDH_END
        MOV     TIMEH ,#00
ADDH_END:RET

SCAN:   MOV     R0,#65000
SCAN1:  LCALL   DISPLAY
        MOV     DPTR,#7FFEH
        MOVX    A,@DPTR
        CPL     A
        ANL     A,#0FH
        JNZ     KEY_OK
        DJNZ    R0,SCAN1
        ACALL   DELAYS
        SJMP    SCAN_STOP

KEY_OK: PUSH    ACC
KOK:    LCALL   DISPLAY
        MOV     DPTR,#7FFEH
        MOVX    A,@DPTR
        CPL     A
        ANL     A,#0FH
        JNZ     KOK
        POP     ACC
SCAN_STOP:
        RET



DELAY:	MOV	R7,#14H
DELAY1:	MOV	R6,#0FFH
DELAY2:	DJNZ	R6,DELAY2
	DJNZ	R7,DELAY1
	RET

T0PRO:  PUSH    ACC
        PUSH    PSW

        MOV     TH0,#3CH
        MOV     TL0,#0B0H

        CLR     P1.0
        
        INC     UP
        MOV     A,UP
        CJNE    A,#20,TTIME
        MOV     UP,#00

        INC     TIMES
        MOV     A,TIMES
        CJNE    A,#60,TTIME
        MOV     TIMES,#00

        INC     TIMEM
        MOV     A,TIMEM
        CJNE    A,#60,TTIME
        MOV     TIMEM,#00

        INC     TIMEH
        MOV     A,TIMEH
        CJNE    A,#24,TTIME
        MOV     TIMEH,#00

TTIME:  LCALL   TIME2LED

        MOV     A,TIMEM
        CJNE    A,CLKM,T0_END
        MOV     A,TIMEH
        CJNE    A,CLKH,T0_END
        SETB    P1.0
        
T0_END: POP     PSW
        POP     ACC

        RETI

TIME2LED:
        MOV     A,TIMEH
        LCALL   HEXTOBCD
        MOV     LED1,A
        MOV     LED2,B

        MOV     A,TIMEM
        LCALL   HEXTOBCD
        MOV     LED3,A
        MOV     LED4,B

        MOV     A,TIMES
        LCALL   HEXTOBCD
        MOV     LED5,A
        MOV     LED6,B

HEXTOBCD:
        MOV     B,#0AH
        DIV     AB
        ANL     A,#0FH
        ANL     B,#0FH
        RET

DISPLAY:
        MOV     DPTR,#7FFCH
        MOV     A,LED1
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#11011111B
        MOVX    @DPTR,A
        LCALL   DELAYS

        MOV     DPTR,#7FFCH
        MOV     A,LED2
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#11101111B
        MOVX    @DPTR,A
        LCALL   DELAYS

        MOV     DPTR,#7FFCH
        MOV     A,LED3
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#11110111B
        MOVX    @DPTR,A
        LCALL   DELAYS

        MOV     DPTR,#7FFCH
        MOV     A,LED4
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#11111011B
        MOVX    @DPTR,A
        LCALL   DELAYS

        MOV     DPTR,#7FFCH
        MOV     A,LED5
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#11111101B
        MOVX    @DPTR,A
        LCALL   DELAYS

        MOV     DPTR,#7FFCH
        MOV     A,LED6
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#11111110B
        MOVX    @DPTR,A
        LCALL   DELAYS
        RET


DELAYS:	MOV	R7,#02H
D1:     MOV	R6,#0FFH
D2:     DJNZ	R6,D2
	DJNZ	R7,D1
	RET

CLOCK:  PUSH    TIMEH
        PUSH    TIMEM
        MOV     TIMEH,CLKH
        LCALL   TIME2LED

        MOV     TIMEM,CLKM
        LCALL   TIME2LED

        MOV     R5,#100
RE:     LCALL   DISPLAY
        DJNZ    R5,RE

        LCALL   SCAN
        JNB     ACC.3,CK1
        SJMP    CLK_END
CK1:    JNB     ACC.0,CLK_END
        ACALL   CLKSET        
CLK_END:
        POP     TIMEM
        POP     TIMEH
        RET
CLKSET: LCALL    DISPLAY
        LCALL    MSET
        LCALL    DISPLAY
        MOV      CLKM,TIMEM
        MOV      CLKH,TIMEH
        RET
        
        END










⌨️ 快捷键说明

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