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

📄 clock.txt

📁 80196的实时时钟的程序
💻 TXT
字号:
AX      EQU     20H
        AL      EQU     20H
        AH      EQU     21H
        BX      EQU     22H
        BL      EQU     22H
        BH      EQU     23H
        CX      EQU     24H
        CL      EQU     24H
        CH      EQU     25H
        DX      EQU     26H
        DL      EQU     26H
        DH      EQU     27H
        EX      EQU     28H
        EL      EQU     28H
        EH      EQU     29H
        BBH     EQU     90H
        T_1     EQU     30H     ;秒
        T_2     EQU     31H     ;分
        T_3     EQU     32H     ;时
        T_4     EQU     34H     ;日
        T_5     EQU     35H     ;月
        T_6     EQU     36H     ;年
        TEMP1   EQU     37H     ;显示缓存
        TEMP2   EQU     38H
        TEMP3   EQU     39H
        TEMP4   EQU     3AH
        TEMP5   EQU     3BH
        TEMP6   EQU     3CH
        TN      EQU     3DH     ;次数
        R_1     EQU     50H     ;日期时间缓存
        R_2     EQU     51H
        R_3     EQU     52H
        R_4     EQU     53H
        R_5     EQU     54H
        R_6     EQU     55H
        QQ      EQU     56H
        F_1     EQU     58H     ;(显/置)
        F_2     EQU     59H     ;时间/日期
        F_3     EQU     5AH     ;设置秒分时日月年
        F_4     EQU     5BH     ;读数标记
        F_5     EQU     5CH     ;设置加1标记
        F_6     EQU     70H     ;字延时次数
        K1N     EQU     64H
        K1P     EQU     65H
        K1S     EQU     66H
        K2N     EQU     67H
        K2P     EQU     68H
        K2S     EQU     69H
        K11N    EQU     6AH
        K11P    EQU     6BH
        K11S    EQU     6CH
        K22N    EQU     6DH
        K22P    EQU     6EH
        K22S    EQU     6FH
        BUF     EQU     90H
        JX      EQU     92H
        K       EQU     93H
        N       EQU     96H
        WT      EQU     9AH

        ORG     2000H
        DCW     T1_INT
        ORG     2080H
 MAIN:  LD   SP,#00FFH
        DI
        CLRB    INT_PEND
        LDB     IOC1,#54H
        LDB     INT_MASK,#01H
        LDB     F_1,#0
        LDB     F_2,#0
        LDB     F_4,#0
        ORB     P2,#0C0H
        NOP
        NOP
        NOP
        LCALL   STT     ;对8025进行初始化
        LDB     BUF,#0E0H
        LCALL   WRITEACK
        LDB     BUF,#20H
        LCALL   SPP
        LCALL   STT
        LDB     BUF,#0F0H
        LCALL   WRITEACK
        LDB     BUF,#20H
        LCALL   SPP
        LDB     T_6,#6
        LCALL   WRITEYEAR
        LDB     T_5,#1
        LCALL   WRITEMONTH
        LDB     T_4,#17H
        LCALL   WRITEDAY
        LDB     T_3,#8
        LCALL   WRITEHOUR
        LDB     T_2,#0
        LCALL   WRITEMINUTE
        LDB     T_1,#0
        LCALL   WRITESECOND
        EI
MAIN1:  LCALL   SUB_K2
        JBS     F_1,0,EDITING1
        LCALL   DISP
        CMPB    F_4,#01H
        JNE     MAIN1
READDATA:
        LCALL START1
        LDB   BUF,#64H
        LCALL WRITEACK
        LDB   BUF,#00H
        LCALL WRITEACK
        LCALL START1
        LDB   BUF,#65H
        LCALL WRITEACK
        LDB   N,#6
        LD    WT,#0030H
LOOP:
        LCALL      READACK
        STB        BUF,[WT]+
        DJNZ       N,LOOP
        LCALL      READ
        STB        BUF,[WT]
        LCALL      STOP
        ANDB       30H,#7FH
        ANDB       31H,#7FH
        ANDB       32H,#3FH
        ANDB       34H,#3FH
        ANDB       35H,#1FH
        CLRB       F_4
        SJMP       MAIN1
EDITING1:  LJMP EDITING
DISP:           ;时间/日期显示程序
        LCALL      SUB_K1
        JBS        F_2,0,DISP1
        LD    CX,#T_3
        LCALL  DISP2
        RET
DISP1:  LD   CX,#T_6
        LCALL      DISP2
        RET
DISP2:  LDB     BL,#03H
        LD      DX,#TEMP1
DISP3:  LDB     AL,[CX]
        LDB     AH,AL
        SHRB       AL,#4
        ANDB       AH,#0FH
        STB        AL,[DX]+
        STB        AH,[DX]+
        DEC        CX
        DJNZ       BL,DISP3
        LCALL      FDISP
        RET
FDISP: LDB        BH,#6
       LD         CX,#TEMP1
FDISP2:LDB        AL,[CX]
       CLRB       AH
       LDB        BL,TAB[AX]
       STB        BL,[CX]+
       DJNZ       BH,FDISP2
       LDB        DL,#6
       LDB        AX,#TEMP1
       LDB        BL,#0H
DDISP: LCALL      ClRDISP
       LDB        P1,[AX]+
       LDB        HSO_COMMAND,BL
       ADD        HSO_TIME,T1,#3
       NOP
       NOP
       LCALL      DELAY
       INCB       BL
       DJNZ       DL,DDISP
       LCALL      CLRDISP
       RET
CLRDISP:
       LDB        HSO_COMMAND,#2CH
       ADD        HSO_TIME,T1,#3
       NOP
       NOP
       RET
DELAY:     LD      F_6,#500
DEL:       DEC     F_6
           JNE     DEL
           RET
TAB:   DCB     3FH,06H,5BH,4FH,66H,
       DCB     6DH,7DH,07H,7FH,6FH,
       DCB     00H,40H,71H,76H,79H
EDITING:
        LDB        R_1,T_1
        LDB        R_2,T_2
        LDB        R_3,T_3
        LDB        R_4,T_4
        LDB        R_5,T_5
        LDB        R_6,T_6
        LDB        BH,#6
        LD         QQ,#0050H
BB:    LDB        AL,[QQ]
       LDB        BL,AL
       SHRB       AL,#4
       MULB       AL,#10
       ANDB       BL,#0FH
       ADDB       AL,BL
       STB        AL,[QQ]+
       DJNZ       BH,BB
       LD         F_3,#01H
EDIT:
       LCALL      SUB_K11
       JBS        F_3,6,EDIT7
       JBS        F_3,0,EDIT6
       JBS        F_3,1,EDIT5
       JBS        F_3,2,EDIT4_0
       JBS        F_3,3,EDIT3_0
       JBS        F_3,4,EDIT2_0
       JBS        F_3,5,EDIT1_0
EDIT1_0:         LJMP         EDIT1
EDIT2_0:         LJMP         EDIT2
EDIT3_0:         LJMP         EDIT3
EDIT4_0:         LJMP         EDIT4
EDIT7:           LDB          BH,#6
                 LD           QQ,#0050H
AA:
       LDB          AL,[QQ]
       CLRB         AH
       DIVB         AX,#10
       SHLB         AL,#4
       ORB          AL,AH
       STB          AL,[QQ]+
       DJNZ         BH,AA
       LDB          T_6,R_6
       LCALL        WRITEYEAR
       LDB          T_5,R_5
       LCALL        WRITEMONTH
       LDB          T_4,R_4
       LCALL        WRITEDAY
       LDB          T_3,R_3
       LCALL        WRITEHOUR
       LDB          T_2,R_2
       LCALL        WRITEMINUTE
       LDB          T_1,R_1
       LCALL        WRITESECOND
       CLRB         F_1
       CLRB         F_2
       LJMP    MAIN1
EDIT6:
       LDB  F_5,R_6
       LCALL  SUB_K22
       LDB  R_6,F_5
       CMPB  R_6,#100
       JNC  EGO6
       CLRB  R_6
EGO6:
       LDB  AL,R_6
       LDB  BL,#06H
       LCALL  EDITS
       LJMP    EDIT
EDIT5:
       LDB  F_5,R_5
       LCALL  SUB_K22
       LDB  R_5,F_5
       CMPB  R_5,#13
       JNC  EGO5
       LDB  R_5,#1
EGO5:
       LDB  AL,R_5
       LDB  BL,#05H
       LCALL  EDITS
       LJMP    EDIT
EDIT4:
       LDB  F_5,R_4
       LCALL  SUB_K22
       LDB  R_4,F_5
       LDBZE  5EH,R_6
       DIVUB  5EH,#04
       CMPB  5FH,#00H
       JNE   K3
K2:
      CMPB   R_5,#02
      JNE  K3
      CMPB  R_4,#30
      SJMP  K4
K3:
      LDBZE   EX,R_5
      LDB  BBH,MAX[EX]
      CMPB  R_4,BBH
K4:
      JNC  EGO4
      LDB  R_4,#1
EGO4:
      LDB  AL,R_4
      LDB  BL,#04H
      LCALL  EDITS
      LJMP    EDIT
EDIT3:
      LDB  F_5,R_3
      LCALL  SUB_K22
      LDB  R_3,F_5
      CMPB  R_3,#24
      JNC  EGO3
      CLRB  R_3
EGO3:
      LDB  AL,R_3
      LDB  BL,#03H
      LCALL  EDITS
      LJMP    EDIT
EDIT2:
      LDB  F_5,R_2
      LCALL  SUB_K22
      LDB  R_2,F_5
      CMPB  R_2,#60
      JNC   EGO2
      CLRB  R_2
EGO2:
      LDB  AL,R_2
      LDB  BL,#02H
      LCALL  EDITS
      LJMP    EDIT
EDIT1:
      LDB  F_5,R_1
      LCALL  SUB_K22
      LDB  R_1,F_5
      CMPB  R_1,#60
      JNC  EGO1
      CLRB  R_1
EGO1:
      LDB  AL,R_1
      LDB  BL,#01H
      LCALL  EDITS
      LJMP    EDIT
MAX:
      DCB  00,32,29,32,31,32
      DCB  31,32,32,31,32,31,32
EDITS:
      CLRB  AH
      DIVUB  AX,#10
      LDB  TEMP5,AL
      LDB  TEMP6,AH
      LDB  TEMP4,#0BH
      LDB  TEMP3,BL
      LDB  TEMP2,#0AH
      LDB  TEMP1,#0AH
      LCALL   FDISP
      RET
SUB_K2:
      LDB   K2P,P0
      JBS  K2P,0,K2OUT1
      JBS  K2S,2,K2OUT2
      INCB   K2N
      CMPB   K2N,#5
      JNC   K2OUT2
      LDB   F_1,#0FFH
      LDB   K2S,#0FFH
      LDB   K11S,#0FFH
      CLRB  K2N
      RET
K2OUT1:
      CLRB  K2S
      CLRB  K2N
K2OUT2:
      RET
SUB_K1:
      LDB    K1P,P0
      JBS  K1P,1,K1OUT1
      JBS  K1S,2,K1OUT2
      INCB   K1N
      CMPB   K1N,#5
      JNC   K1OUT2
      NOTB  F_2
      LDB   K1S,#0FFH
      CLRB  K1N
      RET
K1OUT1:
      CLRB  K1S
      CLRB  K1N
K1OUT2:
      RET
SUB_K22:
      LDB   K22P,P0
      JBS  K22P,1,K22OUT1
      JBS  K22S,2,K22OUT2
      INCB   K22N
      CMPB   K22N,#5
      JNC   K22OUT2
      INCB  F_5
      LDB   K22S,#0FFH
      CLRB  K22N
      RET
K22OUT1:
      CLRB  K22S
      CLRB  K22N
K22OUT2:
      RET

SUB_K11:
      LDB   K11P,P0
      JBS  K11P,0,K11OUT1
      JBS  K11S,2,K11OUT2
      INCB   K11N
      CMPB   K11N,#5
      JNC   K11OUT2
      SHLB  F_3,#1
      LDB   K11S,#0FFH
      LDB   K22S,#0FFH
      LDB   K1S,#0FFH
      CLRB  K11N
      RET
K11OUT1:
      CLRB  K11S
      CLRB  K11N
K11OUT2:
      RET
T1_INT:
      INCB  TN
      CMPB  TN,#4
      JNC   READDATA1
      CLRB  TN
      LDB  F_4,#1
READDATA1:
      RET
READ:
      LDB  K,#8
      LDB  BUF,#00H
RDLOOP:
      LCALL   SDA1
      LCALL   SCL1
      LDB  JX,P2
      SHLB  BUF,#1
      JBS  JX,6,GA1
GAO:
      ANDB  BUF,#0FEH
      SJMP   GA2
GA1:
      ORB  BUF,#01H
GA2:
      NOP
      LCALL  SCL0
      DJNZ  K,RDLOOP
      RET
READACK:
      LCALL  READ
ACK1:
      LCALL  SDA0
      LCALL   SCL1
      LCALL   SCL0
      RET
WRITE:
      LDB  K,#8
WR1:
      SHLB  BUF,#1
      JC  WR2
      LCALL  SDA0
      SJMP   WR3
WR2:
      LCALL  SDA1
WR3:
      NOP
NOP
LCALL  SCL1
LCALL  SCL0
DJNZ  K,WR1
LCALL  SDA1
RET
WRITEACK:
      LCALL   WRITE
ACK0:
      LCALL  SDA1
      NOP
      NOP
      LCALL  SCL1
      LCALL  SCL0
      RET
WRITEYEAR:
      LCALL  STT
      LDB  BUF,#60H
      LCALL  WRITEACK
      LDB  BUF,T_6
      LCALL   SPP
RET
WRITEMONTH:
      LCALL  STT
      LDB  BUF,#50H
      LCALL  WRITEACK
      LDB  BUF,T_5
      LCALL   SPP
RET
WRITEDAY:
      LCALL  STT
      LDB  BUF,#40H
      LCALL  WRITEACK
      LDB  BUF,T_4
      LCALL   SPP
RET
WRITEHOUR:
      LCALL  STT
      LDB  BUF,#20H
      LCALL  WRITEACK
      LDB  BUF,T_3
      LCALL   SPP
RET
WRITEMINUTE:
      LCALL  STT
      LDB  BUF,#10H
      LCALL  WRITEACK
      LDB  BUF,T_2
      LCALL   SPP
RET
WRITESECOND:
      LCALL  STT
      LDB  BUF,#00H
      LCALL  WRITEACK
      LDB  BUF,T_1
      LCALL   SPP
RET
STT:
      LCALL  START
      LDB  BUF,#64H
      LCALL  WRITEACK
      RET
SPP:
      LCALL   WRITEACK
      LCALL  STOP
      RET
START:
      LDB   80H,#30H
JJKK:
      NOP
      NOP
      DJNZ  80H,JJKK
START1:
      LCALL   SDA1
      LCALL   SCL1
      LCALL   SDA0
      LCALL   SCL0
      RET
STOP:
      LCALL   SDA0
      LCALL   SCL1
      LCALL   SDA1
      RET
SCL0:
      ANDB  P2,#7FH
      NOP
      NOP
      NOP
      RET
SCL1:
      ORB   P2,#80H
      NOP
      NOP
      NOP
      RET
SDA0:
      ANDB  P2,#0BFH
      NOP
      NOP
      NOP
      RET
SDA1:
      ORB  P2,#40H
      NOP
      NOP
      NOP
      RET


⌨️ 快捷键说明

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