📄 1302rwd.asm
字号:
RST EQU P3.4
PIO EQU P3.3
SCLK EQU P3.2
ORG 0000H;
sJMP START
ORG 0003H; ;
sJMP START ;
ORG 000BH ;
sJMP START ;
ORG 0013H
SJMP START; ;
ORG 001BH ;
sJMP START ;
ORG 0023H ;
sJMP START; ;
;**************************************
START: ;
AA: MOV P1,#00H
LCALL DELY300uS1
MOV P1,#11H
LCALL DELY300uS1
MOV P1,57H
LCALL DELY300uS1
MOV P1,56H
LCALL DELY300uS1
MOV P1,55H
LCALL DELY300uS1
MOV P1,54H
LCALL DELY300uS1
MOV P1,53H
LCALL DELY300uS1
MOV P1,52H
LCALL DELY300uS1
MOV P1,51H
LCALL DELY300uS1
MOV P1,50H
LCALL DELY300uS1
LCALL READTIM
LCALL CHULI
SJMP AA
DELY300uS1:MOV R1,#20
DEL3001:MOV R2,#54
DJNZ R2,$
DJNZ R1,DEL3001
RET
; ds1302 intreface to 51,designed by ytf, name=ds1302.asm
;
;
; RST EQU P3.4
; PIO EQU P3.3
; SCLK EQU P3.2
;**************************
CHULI: NOP
MOV A,21H
ANL A,#00001111B
ADD A,#20H
MOV 50H,A
MOV A,21H
ANL A,#11110000B
SWAP A
ADD A,#30H
MOV 51H,A
;*****
MOV A,22H
ANL A,#00001111B
ADD A,#40H
MOV 52H,A
MOV A,22H
ANL A,#11110000B
SWAP A
ADD A,#50H
MOV 53H,A
;******
MOV A,23H
ANL A,#00001111B
ADD A,#60H
MOV 54H,A
MOV A,23H
ANL A,#11110000B
SWAP A
ADD A,#70H
MOV 55H,A
;******
MOV A,24H
ANL A,#00001111B
ADD A,#80H
MOV 56H,A
MOV A,24H
ANL A,#11110000B
SWAP A
ADD A,#90H
MOV 57H,A
RET
;***********READ S-M-H-D-Y-MS-YE*********
READTIM:NOP
; MOV R1,#81H ;1-x00000-1 read 00000h n0 pc20h<-'s'
; LCALL READD ;b r
; MOV 20H,R0
MOV R1,#83H ;1-x00001-1 read 00001h n1 pc21h<-'m'
LCALL READD ;b r
MOV 21H,R0
MOV R1,#85H ;1-x00010-1 read 00010h n2 pc22h<-'h'
LCALL READD ;b r
MOV 22H,R0
MOV R1,#87H ;1-x00011-1 read 00011h n3 pc23h<-'d'
LCALL READD ;b r
MOV 23H,R0
MOV R1,#89H ;1-x00100-1 n4 pc24h<-'y'
LCALL READD r
MOV 24H,R0
; MOV R1,#8BH ;1-x00101-1 n5 pc25h<-'ms'
; LCALL READD r
; MOV 25H,R0
; MOV R1,#8DH ;1-x00110-1 n6 pc26h<-'ye'
; LCALL READD r
; MOV 26H,R0
ret
;****** R0=DATA R1=ADDRESS*******
WRITE:CLR SCLK; clr rst
NOP
NOP
SETB RST; RST=1
; setb sclk
NOP
MOV A,R1
MOV R2,#8
; ******* R1=address
SF01:RRC A ; transfer address to ds1302
MOV PIO,C ;write C to io-piont
NOP
NOP
SETB SCLK; clk-shangshenyan clr sclk
NOP
NOP
CLR SCLK; clk-xiajiangyan setb sclk
; ******** one bit write ok
DJNZ R2,SF01 ;* 8-bit address write ok
NOP
NOP
;********************* ;* write 8-bit data
MOV A,R0 ;* R0=data
MOV R2,#8
SF02:RRC A ;transfer data to ds1302,shift right one bit
MOV PIO ,C ;write C to io-piont
NOP
NOP
SETB SCLK ;clk-shangshenyan
NOP
NOP
CLR SCLK ;clk-xiajiangyan
DJNZ R2,SF02
NOP
NOP
CLR RST
NOP
NOP
RET
;**********WRITE OK******************
;****** R0=DATA R1=ADDRESS*******
READD:SETB RST
MOV A,R1
MOV R2,#8
SS01:RRC A
MOV PIO ,C
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R2,SS01
NOP
NOP
SETB PIO
CLR A
CLR C
MOV R2,#8
SS02:MOV C,PIO ;input 9 bit,no.1bit yi chu le
RRC A
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
NOP
NOP
DJNZ R2,SS02
MOV R0,A
CLR RST
RET
;**********READ OK******************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -