首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

这样配置IIC有什么错误,数据读写不对

这样配置IIC有什么错误,数据读写不对

void UnitIIC()
{
IIC0_IBCR=0x00;//控制寄存器
IIC0_IBSR_IBAL=1;//清除IBAL标志
IIC0_IBFD=0x47;//时钟寄存器
IIC0_IBAD=0x00;
IIC0_IBCR=0x80;//控制寄存器
IIC0_IBCR_MS_SL=0;//主模式
}
void read()
{
byte temp=0;
IIC0_IBSR=0x00;
IIC0_IBCR_MS_SL=1;
IIC0_IBCR_TX_RX=1;
IIC0_IBDR=RECEIVER_Address_start;
while (!IIC0_IBSR_IBIF); // wait until IBIF
IIC0_IBSR_IBIF=1;
//while(IIC0_IBSR_RXAK); //加上这条语句,程序就卡在这里了

IIC0_IBCR_TX_RX=0;
temp=IIC0_IBDR;

printf("\nRBUFFER=%x",temp);


IIC0_IBCR_MS_SL=0;
}

void write()
{
IIC0_IBCR_MS_SL=1;
IIC0_IBCR_TX_RX=1;//1发送模式 0 接受模式
IIC0_IBDR=RECEIVER_Address_start;
while (!IIC0_IBSR_IBIF); // wait until IBIF
IIC0_IBSR_IBIF=1;

IIC0_IBDR=0x99;
while(IIC0_IBSR_RXAK); // check for RXAK
while (!IIC0_IBSR_IBIF); // wait until IBIF
IIC0_IBSR_IBIF=1;

IIC0_IBCR_MS_SL=0;

}
这样写出来的我现在认为读的是每次在IIC0_IBDR里的数据,并不是我在

EEPROM里的数据。好像都没写进去?

建议用Processor Expert生成一个,试试看

PE还是很好用的

比自己写代码要清楚多了,还有例程供参考,推荐一下

谢谢你,
QUOTE:
以下是引用KOKOKO在2009-3-11 21:43:00的发言:
谢谢你,

[em04]

怎么没人来说说,这个到底错在哪里

返回列表