|
你的IIC寫入之后沒有把SDA拉高
本身就沒有SDA拉高的代碼,SDA怎么能拉高呢?
要有SDA=1;這個語句之后,才能讀取到SDA的電平數(shù)據(jù)
給你一個參考一下,順便問你一個問題,為什么要寫low呢?0不行嗎?它不比low少打兩鍵盤嗎?
void Write_Byte(unsigned char Byte) //寫入器件的應(yīng)答信號由從機給出
{
unsigned char i;
unsigned int k;
for(i=0;i<8;i++)
{
if(Byte&0x80)SDA=1;
else SDA=0;
Delay();
SCL=1;
Delay();
SCL=0;
Delay();
Byte<<=1;
}
SCL=1;
Delay();
SDA=1;
while((SDA==1)&&(k<1000)) //超時就不再等待應(yīng)答
{
k++;
Delay();
} //等待SDA出現(xiàn)低電平,出現(xiàn)低電平就表示器件已經(jīng)應(yīng)答
SCL=0;
} |
|