No.102600 作者:ningling_21 邮件:ningling_21@126.com ID:69348 登陆:8次 文章数:55篇 最后登陆IP:116.7.56.248 最后登陆:2008/7/5 20:45:07 注册:2007/2/2 17:13:58 财富:249 发帖时间:2007/2/5 18:59:13 发贴者IP:58.60.156.46 标题:ningling_21:I2C读写问题 摘要:No.102600I2C读写问题 硬件用AT24C08+AT89s52,p0.6(scl)p0.7(sda),写入数据时出错,如: 要写#C3H,而实际写入的却是#87H 写#3CH, ------------------ #79H 写#18H,------------------- #31H 写#81H,------------------- #03H等等.... 请各位帮忙找下原因所在,不胜感激! 程序如下: ;主程序,向AT24C08内部的61H单元写一个字节#18H rwtes: mov r4,#61h rts: nop mov 3fh,r4 lcall fenli mov i2c_data,#18h mov iic_addr,r4 ;子地址 lcall writei2c ;写数据 lcall del_5ms lcall fenli0 ret ;写一个字节;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; writei2c:lcall iic_sta ;启动总线 mov iic_wdata,slaw ;寻址字节(写) lcall wr_vdat cpl ledr wrc: lcall cack ;检查应答? dot1=1没有应答 dot1=0应答 jb dot1,wrc ;没有应答重新发送 mov iic_wdata,iic_addr ;存储单元寻址 lcall wr_vdat mov iic_wdata,i2c_data lcall wr_vdat wt: lcall cack jb dot1,wt lcall iic_sto ;释放总线 setb ledr cpl ledg ret ;写数据子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; wr_vdat: mov r7,#8 mov a,IIC_WDATA wrlp: rlc a jc wr1 clr vdat nop setb vscl nop nop nop nop clr vscl djnz r7,wrlp rrt: ......
>>返回讨论的主题
|