――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个52标准内核的头文件 #define WriteDeviceAddress 0xa0 //定义器件在IIC总线中的地址 #define ReadDviceAddress 0xa1 sbit SCL=P2^7; sbit SDA=P2^6; sbit P10=P1^0; //定时函数 void DelayMs(uint number) { uchar temp; for(;number!=0;number--) { for(temp=112;temp!=0;temp--) ; } } //开始总线 void Start() { SDA=1; SCL=1; SDA=0; SCL=0; } //结束总线 void Stop() { SCL=0; SDA=0; SCL=1; SDA=1; } //测试ACK bit TestAck() { bit ErrorBit; SDA=1; SCL=1; ErrorBit=SDA; SCL=0; return(ErrorBit); } //写入8个bit到24c02 Write8Bit(uchar input) { uchar temp; for(temp=8;temp!=0;temp--) { SDA=(bit)(input&0x80); SCL=1; SCL=0; input=input<<1; } } //写入一个字节到24c02中 void Write24c02(uchar ch,uchar address) { Start(); Write8Bit(WriteDeviceAddress); TestAck(); Write8Bit(address); TestAck(); Write8Bit(ch); TestAck(); Stop(); DelayMs(10); } 请问这里面的测试函数bit TestAck() 是怎么测试的啊? 如函数Write24c02()中在调用到它的时候好象不管返回值是0还是1都会接着执行下面的语句啊 不明白!
|