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

📄 代码.txt

📁 此文件是用汇编语言编写的数字钟原程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;0CH 为设置标志,0DH为全显示标志,0EH为显示设置小时标志,0FH为显示设置分标志
;10H 为显示设置闹时标志,11H为显示设置闹分标志
;增加闹时静音功能
;mute-10h,timer-0eh,left-46h,right-47h,up-19h,down-1dh

DO:     MOV     A,1CH
        CJNE    A,#TIMERT,REDO  ;代码不是设置/退出键
        JNB     0CH,SET1        ;是,则进入
        CLR     0CH             ;是,已经进入,则退出
        SETB    0DH             ;恢复正常显示
        CLR     0EH
        CLR     0FH
        CLR     10H
        CLR     11H
        RET

SET1:   SETB    0CH
        SETB    0EH
        CLR     0DH
        CLR     0FH
        CLR     10H
        CLR     11H
        RET

REDO:   CJNE    A,#MUTEM,REDO1  ;不是设置键的处理REDO1,2,3,4...
        LJMP    MUTE            ;MUTE?
REDO1:  CJNE    A,#D_OFF,DO_SET2
        LJMP    DIS_OFF         ;关闭显示
DO_SET2:JB      0CH,SET2        ;时间设置的处理
        RET

SET2:   CJNE    A,#UPU,SET2A
        LJMP    INC1            ;+加(^)
SET2A:  CJNE    A,#DOWND,SET2B
        LJMP    DEC2            ;- 减
SET2B:  CJNE    A,#RIGHTR,SET2C
        LJMP    RIGHT           ;RIGHT右移(>)
SET2C:  CJNE    A,#LEFTL,SET2D
        LJMP    LEFT            ;LEFT左移(<)
SET2D:  CJNE    A,#RECALL,SET2EXT ;DS1302初始化
        LJMP    SET1302
SET2EXT:RET
;--------------------------------INC------------------------
INC1:   JB      0EH,INCH
        JB      0FH,INCM
        JB      10H,INC_H
        JB      11H,INC_M
        RET

INC_H:  INC     6BH               ;闹钟小时增加
        MOV     A,6BH
        CJNE    A,#24D,INCH3
        MOV     6BH,#0
INCH3:  MOV     R1,#0C2H
        MOV     R0,6BH
        ACALL   SETONE            ;写入DS1302
        RET

INC_M:  INC     6AH               ;闹钟分增加
        MOV     A,6AH
        CJNE    A,#60D,INCH4
        MOV     6AH,#0
INCH4:  MOV     R1,#0C0H
        MOV     R0,6AH
        ACALL   SETONE             ;
        RET

INCH:   ;INC     62H               ;
        MOV     6FH,62H
        ACALL   BCD_HEX
        INC     A
        CJNE    A,#24D,INCH1
        MOV     A,#0
INCH1:  MOV     6FH,A
        ACALL   HEX_BCD
        MOV     62H,A
        MOV     R1,#84H
        MOV     R0,62H
        ACALL   SETONE             ;
        RET

INCM:   ;INC     61H               ;
        MOV     6FH,61H
        ACALL   BCD_HEX
        INC     A
        CJNE    A,#60D,INCH2
        MOV     A,#0
INCH2:  MOV     6FH,A
        ACALL   HEX_BCD
        MOV     61H,A
        MOV     R1,#82H
        MOV     R0,61H
        ACALL    SETONE             ;
        RET

;----------------------------------DEC----------------------
DEC2:   JB      0EH,DECH
        JB      0FH,DECM
        JB      10H,DEC_H
        JB      11H,DEC_M
        RET
DECH:   MOV     6FH,62H
        ACALL   BCD_HEX
        DEC     A
        CJNE    A,#0FFH,DECH1
        MOV     A,#23
DECH1:  MOV     6FH,A
        ACALL   HEX_BCD
        MOV     62H,A
        MOV     R1,#84H
        MOV     R0,62H
        ACALL   SETONE
        RET


DECM:   MOV     6FH,61H
        ACALL   BCD_HEX
        DEC     A
        CJNE    A,#0FFH,DECM1
        MOV     A,#59
DECM1:  MOV     6FH,A
        ACALL   HEX_BCD
        MOV     61H,A
        MOV     R1,#82H
        MOV     R0,61H
        ACALL   SETONE
        RET

DEC_H:  DEC     6BH
        MOV     A,6BH
        CJNE    A,#0FFH,DECH3
        MOV     6BH,#23D
DECH3:  MOV     R1,#0C2H
        MOV     R0,6BH
        ACALL   SETONE
        RET

DEC_M:  DEC     6AH
        MOV     A,6AH
        CJNE    A,#0FFH,DECH4
        MOV     6AH,#59D
DECH4:  MOV     R1,#0C0H
        MOV     R0,6AH
        ACALL   SETONE
        RET
;--------------------------------RIGHT----------------------
RIGHT:  JB      0EH,RIGHT1
        JB      0FH,RIGHT2
        JB      10H,RIGHT3
        JB      11H,RIGHT4
        RET                       ;右移
RIGHT1: CLR     0EH
        SETB    0FH
        RET
RIGHT2: CLR     0FH
        SETB    10H
        RET
RIGHT3: CLR     10H
        SETB    11H
        RET
RIGHT4: CLR     11H
        SETB    0EH
        RET
;--------------------------------LEFT-----------------------
LEFT:   JB      0EH,LEFT1
        JB      0FH,LEFT2
        JB      10H,LEFT3
        JB      11H,LEFT4
        RET                       ;左移
LEFT1:  SETB    11H
        CLR     0EH
        RET
LEFT2:  SETB    0EH
        CLR     0FH
        RET
LEFT3:  SETB    0FH
        CLR     10H
        RET
LEFT4:  SETB    10H
        CLR     11H
        RET
;------------------------------MUTE--------------
MUTE:   setb    k_ON
        CPL     06H              ;静音
        CLR     08H
        RET
;-----------------------------DISPLAY OFF--------
DIS_OFF:CLR     ET1
        CPL     05H
        JNB     05H,REDORE
        SETB    ET1
REDORE: RET
;------------------------------------初始化1302-------------------------
SET1302: CLR    RST           ;2002年1月1日12:00:00
         CLR    LED3CLK
        MOV     SECOND,#0
        MOV     61H,#0
        MOV     62H,#18       ;
        MOV     63H,#1
        MOV     64H,#1
        MOV     65H,#1
        MOV     66H,#2
         SETB   RST
         MOV    A,#8EH
         LCALL  R_BIT
         MOV    A,#00H
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST

         MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#80H
SET1302A:CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         LCALL  R_BIT
         MOV    A,@R0
         LCALL  R_BIT
         INC    R0
         INC    R1
         INC    R1
         SETB   LED3CLK
         CLR    RST
         DJNZ   R7,SET1302A
         CLR    RST
         CLR    LED3CLK

         sETB   LED3CLK
         nop
         CLR    RST
         nop
         clr    led3clk
         SETB   RST
         MOV    A,#90H
         LCALL  R_BIT
         MOV    A,#10100101B         ;充电器设置
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         CLR    LED3CLK

         SETB   RST
         MOV    A,#8EH
         LCALL  R_BIT
         MOV    A,#80H
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         RET
;----------------------读取一RAM ------
T_6061:  CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         LCALL  R_BIT
         LCALL  W_BIT
         SETB   LED3CLK
         CLR    RST
         RET
;-----------------------------
R_1302:  MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#81H
R_1302A: CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         LCALL  R_BIT
         LCALL  W_BIT
         MOV    @R0,A
         INC    R0
         INC    R1
         INC    R1
         SETB   LED3CLK
         CLR    RST
         DJNZ   R7,R_1302A
         RET
;------------------R_BIT------------------
R_BIT:   MOV    R4,#8
R_BIT1:  RRC    A
         MOV    LED4IO,C
         SETB   LED3CLK
         CLR    LED3CLK
         DJNZ   R4,R_BIT1
         RET
;-------------------W_BIT-----------------------
W_BIT:   MOV    R4,#8
W_BIT1:  MOV    C,LED4IO
         RRC    A
         SETB   LED3CLK
         CLR    LED3CLK
         DJNZ   R4,W_BIT1
         RET
;--------------------------------------------------
BCD_HEX:
         MOV    A,6FH
         ANL    A,#0FH
         MOV    B,A
         MOV    A,6FH
         MOV    6FH,B
         SWAP   A
         ANL    A,#0FH
         MOV    B,#0AH
         MUL    AB
         ADD    A,6FH
         ;MOV    6FH,A
         RET

HEX_BCD:
         MOV   A,6FH
         MOV   B,#10
         DIV   AB
         SWAP  A
         ADD   A,B
         ;MOV   6FH,A
         RET

;-----写一地址---R1 为地址,R0 为数据----------
SETONE:  CLR    LED3CLK
         CLR    RST
         CLR    LED3CLK
         NOP
         SETB   RST
         MOV    A,#8EH
         LCALL  R_BIT
         MOV    A,#00H
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         CLR    LED3CLK
         NOP
         CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         LCALL  R_BIT
         MOV    A,R0
         LCALL  R_BIT
         NOP
         SETB   LED3CLK
         CLR    RST
         NOP
         NOP
         CLR    RST
         CLR    LED3CLK

         SETB   RST
         MOV    A,#8EH
         LCALL  R_BIT
         MOV    A,#80H
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         RET

⌨️ 快捷键说明

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