遇到奇怪问题
遇到奇怪问题
我用AT89S52和DS1307(I2C接口的时钟芯片)和LCD模块做时钟显示,配有按键,但是有个怪现象,显示的时间是从时钟芯片中读出的,但是走时2个小时就会有时间偏差,一般会有50多分钟,走6-7个小时,时间停住了,硬件实在没什么问题,希望高手指点迷津,不胜感激。
I2C读写代码如下:
P3.0-------SCL
P3.1-------SDA
;-----------------
wr_byte: mov r7,#8
clr c
mov a,i2c_wdata
rlc a
wlp: jnb cy,wr00
setb vsda
ajmp wp1
wr00: clr vsda
wp1: nop
nop ;add 2008-4-30
nop ;add 2008-4-30
setb vscl
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-4-30
nop ;add 2008-4-30
clr vscl
nop
rlc a
djnz r7,wlp
setb vsda
nop
setb vscl
clr flag1 ;nop
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop
nop
mov c,vsda;
nop
jnc cend0 ;
setb flag1 ;
cend0: clr vscl
ret
;-----------------------
read_data:clr c
mov i2c_rdata,#00
mov r7,#8
lop1: setb vsda ;input
nop
nop ;add 2008-4-30
setb vscl
nop ;nop
nop ;add 2008-4-30
nop ;nop
nop ;nop
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;nop
mov c,vsda ;start read
mov a,i2c_rdata ;nop
rlc a ;nop
mov i2c_rdata,a ;nop
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop ;add 2008-5-15
nop
clr vscl ;
nop ;nop
djnz r7,lop1
ret
发表时间:2008年7月2日22:47:59