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还是很好用的
比自己写代码要清楚多了,还有例程供参考,推荐一下
怎么没人来说说,这个到底错在哪里
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |