;实时时钟DS1302
ORG 0000H
CE EQU P3.5
IO EQU P3.3
SCLK EQU P3.4
AJMP MAIN
ORG 0030H
MAIN:
LCALL REST
lcall write1302
nop
nop
nop
nop
nop
nop
nop
nop ;哈哈哈原来如此!这里果然得加延时,不加的话1302反应不过来啊,哈哈哈
nop ;至今天我终于把DS1302`搞定了,这也是努力得来的啊,我虽然笨,但别人做到了,我通过努力也一定办得到。
;至今天板子上的器件都搞定了2010年8月1日,这个值得纪念的 日子,
nop ;18B20,1602,数码显示,24C08,AD0832,DS1302,呵呵呵继续努力
nop
nop
nop
nop
KK: MOV A,#81H
LCALL READ1302
MOV P0,A
AJMP KK
REST:CLR SCLK
CLR CE
clr io
clr c
NOP
NOP
NOP
NOP
NOP
RET
WRITE1302:
clr sclk
SETB CE
mov a,#80h
MOV R1,#08
WUR: RRC A
MOV IO,C
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R1,WUR
mov a,#00h
MOV R1,#08
WURt: RRC A
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R1,WURt
CLR SCLK
NOP
NOP
NOP
CLR CE
RET
READ1302:;注意这里啊,这里的读贝内置到肚里面,原因再与如果分开在时序上是不成立的,
CLR SCLK
SETB CE
SETB IO
NOP
NOP
CLR C
NOP
NOP
MOV R1,#08
Ro:
CLR SCLK
RRC A
MOV IO,C
NOP
SETB SCLK
NOP
NOP
DJNZ R1,Ro
mov r1,#08
RUD:
setb sclk
NOP
NOP
CLR SCLK
NOP
NOP
MOV C,IO
NOP
RRC A
DJNZ R1,RUD
CLR SCLK
CLR CE
RET
end
|