[信息与通信]i2c总线程序.doc

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[信息与通信]i2c总线程序

i2c总线程序 [日期:2005-3-13] 来源:Lierda论坛? 作者:石建华 [字体:大 中 小] ??? 本程序是i2c总线读写一个字节的程序。在写过程序中,不一定非要检测i2c的应答位,可以直接延时过去就行,但是在读过程中必须给应答信号,读完发停止位,一定确认所发的信号都发上了。否则在连续地址读的过程中可能不会出错,但是在随机度过程中就会出错,我的程序就是在给停止信号时没有给上,24cxx一直在输出数据,结果读出错。找着问题后我的程序只加入了一条命令便完全正常。顺便提醒大家在调试24cxx时最好不要读些连续的地址,这样容易造成巧合因素导致疏忽,我这次犯的就是这个错误,程序一调试就通了,结果不再管它,到后来标定程序后算不出结果才有回头调试,折腾我两周。唉!!!郁闷呀!!!! /*?***********************?EEPROM?24C256*******************************?*/ //?调试环境:时钟为DCO的时钟;频率4.00MHz //?串行接口:P5.6?------SDA //?P5.7?------SCL //?测试器件:Microchip?24LC256 //?测试时间:2004-10-15 //?编写人员:石建华 /*?***********************************************************************?*/ #include?msp430x14x.h #define?SDA_IN?P5DIR?=~BIT6?//?P5.6?IN #define?SDA_OUT?P5DIR?|=BIT6?//?P5.6?OUT #define?SDA_LOW?P5OUT?=~BIT6?//?sda=0 #define?SDA_HIGH?P5OUT?|=BIT6?//?sda=1 #define?SCL_IN?P5DIR?=~BIT7?//?P5.7?IN? #define?SCL_OUT?P5DIR?|=BIT7?//?P5.7?OUT #define?SCL_LOW?P5OUT?=~BIT7 #define?SCL_HIGH?P5OUT?|=BIT7? void?delay?(unsigned?int?TT) { for?(;TT!=0;TT--); }? unsigned?char?DATAR01,DATAR11,DATAR21,DATAR31,DATAR41;? void?IIC_START?(void) {?SDA_OUT; SDA_HIGH; SCL_HIGH; delay?(50); SDA_LOW; delay?(50); SCL_LOW; delay?(50); } void?IIC_STOP?(void) {?SDA_OUT; SDA_LOW; delay?(50); SCL_HIGH; delay?(50); SDA_HIGH; delay?(50); } void?IIC_ACK?(void) {?SDA_OUT; SDA_LOW; delay?(50); SCL_HIGH; delay?(50); SCL_LOW; delay?(50); } void?IIC_TX_DATA?(unsigned?char?DATA) {unsigned?char?Rn=8,RR=0x80; SDA_OUT; delay?(50); for?(;Rn!=0;Rn--) { if?((DATARR)!=0) SDA_HIGH; else SDA_LOW; delay?(50); SCL_HIGH; delay?(50); SCL_LOW; delay?(50); RR=1; } SDA_HIGH; delay?(50); SCL_HIGH; delay?(50); SCL_LOW; delay?(50); } unsigned?char?IIC_RX_DATA?(void) {unsigned?int?Rn=8,DATA=0,RR=0x80; SDA_IN;?//?端口为输入 delay?(50); for?(;Rn!=0;Rn--) { SCL_HIGH; delay?(50); if?((P5INBIT6)!=0) DATA|=RR; else DATA=~RR; RR=1; SCL_LOW; delay?(50); } return?DATA; } unsigned?char?READ_BYTE?(unsigne

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档