求助!关于STC单片机的控制AT24C02的问题
在宏晶网站上下载的程序,其中有个向IIC总线发送一个字节数据的函数中接收应答为什么是这样写的(红色部分),而不是用while等待?求解/**************************************
接收应答信号
**************************************/
bit AT24C04_RecvACK()
{
SCL = 1; //拉高时钟线
Delay5us(); //延时
CY = SDA; //读应答信号
SCL = 0; //拉低时钟线
Delay5us(); //延时
return CY;
}
/**************************************
向IIC总线发送一个字节数据
**************************************/
void AT24C04_SendByte(BYTE dat)
{
BYTE i;
for (i=0; i<8; i++) //8位计数器
{
dat <<= 1; //移出数据的最高位
SDA = CY; //送数据口
SCL = 1; //拉高时钟线
Delay5us(); //延时
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
AT24C04_RecvACK();
} 本帖最后由 marshallemon 于 2012-6-7 09:08 编辑
如果E2P出问题,用while()不把单片机等死了? 若用while等待,那NOACK怎么办 STC网站上有这个程序的,直接下载修改试试。 对EEPROM来说,不需要用WHILE等待,你发了SCK给它,它必须回应,不管是ACK还是NAK。 sme 发表于 2012-6-7 11:46 static/image/common/back.gif
对EEPROM来说,不需要用WHILE等待,你发了SCK给它,它必须回应,不管是ACK还是NAK。 ...
嗯,lz对IIC协议理解还不够透彻 程序一定要考虑异常的情况。
页:
[1]