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

📄 ds1302.asm

📁 流行的实时时钟芯片操作源代码
💻 ASM
字号:

                   IO     BIT  P3.0                    ;
                   SCLK   BIT  P3.1
                   RST    BIT  P3.2
                   ORG    0000H                        ;
                   LJMP   MAIN                         ;

MAIN:
                   CALL   SET1302                      ;
XSSJ:              CALL   GET1302                      ;
                   MOV    R0,#31H                      ;
PD:                CJNE   @R0,#00H,BPD                 ;
                   JMP    XSRQ                         ;
BPD:               MOV    R0,#30H;
                   MOV    R3,#20H                      ;
                   LCALL  CFXS                         ;
                   INC    R0                           ;
                   LCALL  CFXS                         ;
                   INC    R0                           ;
                   LCALL  CFXS                         ;
                  
                   JMP    XSSJ                         ;
;*******************************************************************************************
TIME:       DB  00H,45H,09H,22H,06H,03H,05H
DSEG0:      DB  0BFH,0B0H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH
;*********************************************************************************************
XSRQ:              ;
                   MOV   39H,#20H
XSRQ1:             MOV   38H,#00H                      ;
XSRQ2:             MOV   R0,#33H                       ;
                   MOV   R3,#20H                       ;
                   LCALL CFXS                          ;
                   INC   R0                            ;
                   LCALL CFXS                          ;
                   INC   R0                            ;
                   INC   R0                            ;
                   LCALL CFXS                          ;
                   DJNZ  38H,XSRQ2;                     ;
                   DJNZ  39H,XSRQ1;
;**************************************************************************************
                   MOV   39H,#20H                      ;
XSXQ1:             MOV   38H,#00H                      ;
XSXQ2:             MOV   R0,#35H                       ;
                   MOV   R3,#20H                       ;
                   LCALL CFXS                          ;
                   DJNZ  38H,XSXQ2                     ;
                   DJNZ  39H,XSXQ1;
                   JMP   XSSJ                          ;
;**************************************************************************************
                    ;
;**************************************************************************************
CFXS:              MOV    A,R3;
                   MOV    P2,A;
                   RR     A;
                   MOV    R3,A;
                   MOV    A,@R0;
                   ANL    A,#0FH;
                   MOV    DPTR,#DSEG0;
                   MOVC   A,@A+DPTR;
                   MOV    P1,#80H
                   MOV    P1,A;
                   LCALL  YS;
                   MOV    A,R3;
                   MOV    P2,A;
                   RR     A;
                   MOV    R3,A
                   MOV    A,@R0;
                   ANL    A,#0F0H;
                   SWAP   A;
                   MOV    DPTR,#DSEG0;
                   MOVC   A,@A+DPTR;
                   MOV    P1,A;
                   LCALL  YS;
                   RET
;***********************************************************************************
                      ;
;***********************************************************************************
GET1302:           MOV    R0,#30H                      ;
                   MOV    R3,#07H                      ;
                   MOV    R1,#81H                      ;
DS1302D:           SETB   RST                          ;
                   NOP
                   MOV    B,R1
                   LCALL  YS;
                   LCALL  INPUTBYTE
                   LCALL  YS;
                   LCALL  OUTPUTBYTE
                   MOV    @R0,A
                   INC    R0                           ;
                   INC    R1                           ;
                   INC    R1
                   DJNZ   R3,DS1302D                   ;
                   RET
;**************************************************************************
                   ;
;**************************************************************************
SET1302:           CLR    RST
                   NOP
                   CLR    SCLK;
                   NOP
                   SETB   RST                          ;
                   NOP
                   MOV    B,#08EH                      ;
                   LCALL  INPUTBYTE
                   MOV    B,#00H                       ;
                   LCALL  INPUTBYTE
                   CLR    RST;
                   LCALL  YS;
                   MOV    DPTR,#TIME                   ;
                   MOV    20H,#00H;
                   MOV    R3,#07H
                   MOV    R0,#80H                      ;
DS1302:            SETB   RST                          ;
                   NOP
                   MOV    B,R0
                   LCALL  INPUTBYTE                    ;
                   MOV    A,20H;
                   INC    20H;
                   MOVC   A,@A+DPTR
                   MOV    B,A
                   LCALL  INPUTBYTE                    ;
                   CLR    RST
                   ;INC    DPTR                         ;
                   INC    R0                           ;
                   INC    R0
                   DJNZ   R3,DS1302                    ;
                   NOP
                   SETB   RST                          ;
                   NOP
                   MOV    B,#8EH                       ;
                   LCALL  INPUTBYTE                    ;
                   MOV    B,#80H                       ;
                   LCALL  INPUTBYTE;
                   CLR    RST
                   RET

;***********************************************************************************
         ;
;***********************************************************************************  
INPUTBYTE:         MOV    R2,#08H                      ;
                   MOV    A,B                          ;
                   CLR    C                            ;
INBIT:             RRC    A                            ;
                   MOV    IO,C                         ;
                   NOP
                   SETB   SCLK                         ;
                   NOP
                   NOP
                   NOP
                   CLR    SCLK                         ;
                   DJNZ   R2,INBIT                     ;
                   RET
;************************************************************************************
                ;
;************************************************************************************
OUTPUTBYTE:        MOV    R2,#08H                      ;
                   CLR    C
                   CLR    A
OUTBIT:            CLR    SCLK                          ;
                   MOV    C,IO                          ;
                   RRC    A
                   SETB   SCLK
                   NOP                                  ;
                   NOP
                   DJNZ   R2,OUTBIT                     ;
                   CLR    SCLK
                   NOP
                   NOP
                   CLR    RST                            ;                    
                   RET
;*************************************************************************************
                     ;
;*************************************************************************************
YS:                MOV     R7,#02H;
YS1MS1:            MOV     R6,#00H;
YS1MS2:            DJNZ    R6,YS1MS2
                   DJNZ    R7,YS1MS1;
                   RET


                   END

⌨️ 快捷键说明

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