遇到奇怪问题 遇到奇怪问题 我用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 [详细内容] |