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

📄 ds1307程序 1.asm

📁 ds1307时钟芯片汇编语言程序代码
💻 ASM
字号:
SDA  BIT  P1.4
 SCL  BIT  P3.3

 FLAG EQU 20H

 ACK  BIT FLAG.0

 SLA  EQU 50H
 SUBA EQU 51H
 NUMBYTE  EQU 52H
 VALUE  EQU   53H

 MTD  EQU  30H
 MRD  EQU  40H
 PCF8563 EQU 0D0H
 POINTADD EQU 00H
      ORG    000H
      JMP    BEGIN
      ORG    80H
 BEGIN:
 MAIN: MOV  SP,#80H
        MOV  A,#00H
        MOV  R0,#01H
        ;JMP RCV8563
 INIT:   MOV  @R0,A
        INC  R0
        CJNE R0,#100,INIT
        MOV SLA,#0D0H
        MOV SUBA,#00H
        MOV VALUE,#30H
        LCALL    WRITE

        JMP  READ_TIME0

RCV8563:
MOV SLA,#0D0H
MOV SUBA,#07H
MOV VALUE,#00H
LCALL    WRITE

MOV SLA,#0D0H
MOV SUBA,#00H
MOV VALUE,#10H
LCALL    WRITE

MOV SLA,#0D0H
MOV SUBA,#01H
MOV VALUE,#27H
LCALL    WRITE


MOV SLA,#0D0H
MOV SUBA,#02H
MOV VALUE,#10H
LCALL    WRITE

MOV SLA,#0D0H
MOV SUBA,#03H
MOV VALUE,#05H
LCALL    WRITE


MOV SLA,#0D0H
MOV SUBA,#04H
MOV VALUE,#03H
LCALL    WRITE

MOV SLA,#0D0H
MOV SUBA,#05H
MOV VALUE,#08H
LCALL    WRITE


MOV SLA,#0D0H
MOV SUBA,#06H
MOV VALUE,#07H
LCALL    WRITE


READ_TIME0:
MOV SLA,#0D1H;取器件地址
MOV SUBA,#00H ;取读时间的首字节地址从秒开始读
MOV NUMBYTE,#07H ;读七个时间信息
MOV  R0,#MRD


READ_TIME:
LCALL IRDNBYTE ;读取时间并放入接收缓冲区中
MOV  @R0,A
INC  R0
INC   SUBA
DJNZ NUMBYTE,READ_TIME

MOV A,MRD ;取秒字节
ANL A,#7FH ;屏蔽无效位
MOV MRD,A
MOV A, MRD+1
ANL A,#7FH ;屏蔽无效位
MOV MRD+1,A
MOV A, MRD+2 ;取小时字节
ANL A,#3FH ;屏蔽无效位
MOV MRD+2,A
MOV A, MRD+3 ;取天字节
ANL A,#3FH ;屏蔽无效位
MOV MRD+3,A
;MOV A, MRD+4 ;取星期字节
;ANL A,#07H ;屏蔽无效位
;MOV MRD+4,A
MOV A,MRD+5 ;取月字节
ANL A,#0FFH ;屏蔽无效位
MOV MRD+5,A
 JMP READ_TIME0


WRITE:  LCALL START
        MOV A,SLA
        LCALL WRBYTE
        JC    WEND
        MOV A,SUBA
        LCALL WRBYTE
        JC    WEND
        MOV   A,VALUE
        LCALL WRBYTE
 WEND:LCALL STOP
        RET


IRDNBYTE:
        MOV   SLA,#0D0H
        LCALL START
        MOV A,SLA
        LCALL WRBYTE
        JC    RETRDN
        MOV A,SUBA
        LCALL WRBYTE
        JC    RETRDN

        MOV   SLA,#0D1H
        LCALL START
        MOV A,SLA
        LCALL WRBYTE
        JC    RETRDN

        LCALL READ_BYTE
 RETRDN:LCALL STOP
        RET


READ_BYTE:
            MOV    R6,#08H
RB_01:      SETB   SCL
            NOP
            MOV    C,SDA
            RLC    A
            CLR    SCL
            DJNZ   R6,RB_01
            RET





 RDBYTE:
       MOV R0,#08H
 RLP:  SETB SDA
       NOP
       SETB SCL
       NOP
       NOP
       MOV C,SDA
       MOV A,R2
       CLR SCL
       RLC A
       MOV R2,A
       NOP
       NOP
       NOP
       DJNZ R0,RLP
       RET
   MACK:  CLR   SDA
        NOP
        NOP
        SETB  SCL
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        CLR SCL
        NOP
        NOP
        RET
        START:  SETB SDA
         NOP
         SETB SCL
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          CLR SDA
            NOP
            NOP
            NOP
            NOP
            NOP
            CLR SCL
            NOP
            NOP
            NOP
            NOP
            NOP
            RET
 STOP:   CLR SDA
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          SETB SCL
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          CLR SDA
          RET
    CACK:  SETB SDA
        NOP
        NOP
        SETB SCL
        CLR ACK
        NOP
        NOP
        MOV C,SDA
        JC CEND
        SETB ACK
 CEND:  NOP
        CLR SCL
        NOP
        RET
WRBYTE:
            MOV   R6,#08H
WB_01:      RLC   A
            MOV   SDA,C
            SETB  SCL
            NOP
            NOP
            NOP
            CLR   SCL
            DJNZ  R6,WB_01
            SETB  SDA
            CLR   C
            SETB  SCL
            NOP
            NOP
            JB    SDA,WB_03
WB_02:      CLR   SCL
            RET
WB_03:      SETB  C
            SJMP  WB_02

⌨️ 快捷键说明

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