📄 ds1302.asm
字号:
WRDS: MOV R5,#08H ;写DS1302一个字节
CLR IO
CLR CLK
WRDS1:
RRC A
MOV IO,C
MOV PCA0CPH2,#0F0H
LCALL DELAY1
SETB CLK
LCALL DELAY1
CLR CLK
DJNZ R5,WRDS1
RET
RDDS: MOV R5,#08H ;读DS1302一个字节
SETB IO
RDDS1:
MOV C,IO
RRC A
SETB CLK
MOV PCA0CPH2,#0F0H
LCALL DELAY1
CLR CLK
LCALL DELAY1
DJNZ R5,RDDS1
RET
WRITE_RAM:
MOV A,#0FEH
CLR RST
CLR CLK ;写数据命令(一个字节)
NOP
NOP
LCALL DELAY1
SETB RST
LCALL WRDS
MOV R1,#60H
WRITE1:
MOV A,@R1
LCALL WRDS
INC R1
DJNZ R7,WRITE1
CLR RST
RET
READ_RAM:
MOV A,#0FFH
CLR RST
CLR CLK ;写数据命令(一个字节)
NOP
NOP
LCALL DELAY1
SETB RST
LCALL WRDS
MOV R1,#60H
READ1:
LCALL RDDS
MOV @R1,A
INC R1
DJNZ R7,READ1
CLR RST
RET
DELAY1:
NOP
NOP
RET
WCLK:
CLR RST
CLR CLK ;写数据命令(一个字节)
NOP
NOP
LCALL DELAY1
SETB RST
MOV A,30H ;命令单元
MOV PCA0CPH2,#0F0H
LCALL WRDS
MOV A,31H ;数据单元
LCALL WRDS
CLR RST
RET
RCLK:
CLR RST
CLR CLK ;读数据命令(一个字节)
NOP
NOP
LCALL DELAY1
SETB RST
MOV A,30H ;命令单元
MOV PCA0CPH2,#0F0H
LCALL WRDS
LCALL RDDS
MOV 31H,A ;数据单元
CLR RST
CJNE A,#0FFH,RCLK1
LCALL DELAY1MS
DJNZ 3CH,RCLK ;错误次数
SETB SHI_C
RCLK1:
RET
CLRWP: ;取消写保护子程序
CLR CLK
SETB RST
MOV 30H,#8EH
MOV 31H,#00H
MOV PCA0CPH2,#0F0H
LCALL WCLK
CLR RST
RET
SETWP: ;开写保护子程序
CLR CLK
SETB RST
MOV 30H,#8EH
MOV 31H,#80H
MOV PCA0CPH2,#0F0H
LCALL WCLK
CLR RST
RET
SZ1302:
MOV 30H,#90H
MOV 31H,#0A5H
MOV PCA0CPH2,#0F0H
LCALL WCLK
RET
READH: MOV 30H,#85H ;读小时
MOV PCA0CPH2,#0F0H
MOV 3CH,#04H
LCALL RCLK
MOV A,31H
ANL A,#0FH
MOV R3,A
MOV A,31H
ANL A,#10H
SWAP A
MOV B,#0AH
MUL AB
ADD A,R3
MOV R3,A
MOV A,31H
ANL A,#20H
SWAP A
MOV B,#0AH
MUL AB
ADD A,R3
RET
WRITH:
MOV PCA0CPH2,#0F0H
MOV 30H,#84H ;写小时24小时制
MOV 31H,A
CJNE A,#14H,C_1
MOV 31H,#20H
MOV A,31H
AJMP WRITH1
C_1:
JC C_0
MOV A,31H
CLR C
SUBB A,#14H
ADD A,#20H
MOV 31H,A
AJMP WRITH1
C_0:
MOV A,31H
MOV B,#0AH
DIV AB
SWAP A
MOV 31H,A
MOV A,B
ORL A,31H
MOV 31H,A
WRITH1:
MOV 31H,A
MOV PCA0CPH2,#0F0H
LCALL WCLK
RET
SHI_READ: ;R3读命令,R4与值,A,出口
MOV 30H,R3
MOV PCA0CPH2,#0F0H
LCALL RCLK
MOV PCA0CPH2,#0F0H
MOV A,31H
ANL A,#0FH
MOV 32H,A
MOV A,31H
SWAP A
ANL A,R4
MOV B,#10
MUL AB
ADD A,32H
SETB CLK
RET
SHI_WRITE: ;R3写命令, R4与值,A,入口
MOV 30H,R3
MOV B,#10
DIV AB
MOV 32H,B
ANL A,R4
SWAP A
ORL A,32H
MOV 31H,A
MOV PCA0CPH2,#0F0H
LCALL WCLK
SETB CLK
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -