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里的数据。好像都没写进去? |