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

📄

📁 该电子日历可显示年、月、日、星期、时、分的时间信息。 整个系统采用AT89C52作为中央处理芯片
💻
📖 第 1 页 / 共 2 页
字号:
;0CH 为设置标志,0DH为全显示标志,0EH为显示设置小时标志,0FH为显示设置分标志
;10H 为显示设置闹时标志,11H为显示设置闹分标志
;增加闹时静音功能
;mute-10h,timer-0eh,left-46h,right-47h,up-19h,down-1dh

D   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

RED   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 + -