📄 ds1302-ini.txt
字号:
sclk bit 90H ;p1.0=sclk
io bit 91H ;P1.1=I/O
RST BIT 92H ;P1.2=RST
;PSW.5 BIT 0D5H ;READ:PSW.5=1;WRIT:PSW.5=0
SEC DATA 60H ;SECOND
MIN DATA 61H ;MINUTE
HR DATA 62H ;HR
DATE DATA 63H ;SATE
MONTH DATA 64H ;MONTH
DAY DATA 65H ;DAY
YEAR DATA 66H
ORG 0000H
MOV SP,#30H
LCALL INIT
START: MOV R0,#SEC
MOV R7,#7
SETB PSW.5
LCALL RWRTC
LJMP START
; *********************
RWRTC: MOV B,#10000001B ;READ DS1302
JB PSW.5,RWRTC1
MOV B,#10000000B ;WRITE DS1302
RWRTC1: CLR SCLK ;SCLK=VIL
NOP
SETB RST ;RST=VIH
MOV R6,#8
MOV A,B
RWRTC2: CLR SCLK ;SCLK=VIL
RRC A
MOV IO,C ;WRITE COMMAND
NOP
SETB SCLK ;SCLK=VIH
DJNZ R6, RWRTC2
MOV R6,#8
JNB PSW.5, RWRTC4
RWRTC3:
CLR SCLK ;SCLK-VIL
NOP
MOV C,IO ;READ DATA
RRC A
SETB SCLK ;SCLK=VIH
DJNZ R6, RWRTC3
MOV @R0,A
SJMP RWRTC6
RWRTC4: MOV A,@R0
RWRTC5: CLR SCLK ;SCLK=VIL
RRC A
MOV IO,C ;WRITE SATA
NOP
SETB SCLK ;SCLK=VIH
DJNZ R6,RWRTC5
RWRTC6: INC R0 ;NEXT SDDRESS/DATA
MOV A,B
ADD A,#00000010B ;SDDRESS+1
MOV B,A
CLR RST ;RST=VIL
NOP
CLR SCLK ;SCLK=VIL
DJNZ R7,RWRTC1
RET
;***************************************************************
WRRTC: CLR SCLK
NOP
SETB RST
NOP
NOP
MOV R7,#2
WRRTC1: MOV R6,#8
MOV A,@R0
CLR C
WRRTC2: CLR SCLK
RRC A
MOV IO,C
NOP
SETB SCLK
DJNZ R6, WRRTC2
INC R0
DJNZ R7, WRRTC1
CLR RST
NOP
CLR SCLK
RET
;*********************************************************************
INIT: CLR SCLK
CLR RST
MOV SEC,#10001110B ;OPEN WRITE PROTECTION
MOV MIN,#00000000B ;
MOV R0,#SEC
LCALL WRRTC
MOV SEC,#10010000B ;R1=2K,1 DIODE
MOV MIN,#10100101B
MOV R0,#SEC
LCALL WRRTC
MOV SEC,#10000000B ;START TIMER
MOV MIN,#00000000B
MOV R0,#SEC
LCALL WRRTC
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -