程序一直循环
设断点发现,程序会一直循环,这是为何?按理说发送完成SSP1IF会置1void I2C_Start() //开启I2C
{
SSP1CON2bits.SEN = 1; //开启指令
while (SSP1CON2bits.SEN == 1);
}
void I2C_Stop() //停止I2C
{
SSP1CON2bits.PEN = 1;
while (SSP1CON2bits.PEN);
}
void write_eeprom(unsigned char address)
{
unsigned char m;
I2C_Start(); //开启
PIR1bits.SSP1IF = 0;
SSP1BUF = 0xA0 ; //E2PROM地址
while (!PIR1bits.SSP1IF);
PIR1bits.SSP1IF = 0;
SSP1BUF = address; //写地址
while(!PIR1bits.SSP1IF);
PIR1bits.SSP1IF = 0;
for (m= 0;m < 6; m++)
{
SSP1BUF = EE_Data; //数值
while(!PIR1bits.SSP1IF);
PIR1bits.SSP1IF == 0;
}
I2C_Stop();
PIR1bits.SSP1IF = 0;
} 刚弄完此类项目,pic的iic比较麻烦
所有程序编程 都是需要一段时间去解决的。慢慢来吧。
程序可不好做,基本都是慢慢整出来的,不要着急慢慢来。
你这是和IIC接口EE通信,那还要查看相关EE的数据手册,看看读写时序,再看看IIC的时序对不对
什么叫一直循环
用MCC配置出来的代码,比较一下看怎么样
发送完一直循环?
for (m= 0;m < 6; m++)
{
SSP1BUF = EE_Data; //数值
while(!PIR1bits.SSP1IF);
PIR1bits.SSP1IF == 0; //这里多了一个 “=”号
}
页:
[1]