//************向AT24C02寫入數(shù)據(jù)*******************//
bit write_byte(uchar write_data)
{
uchar i;
bit ack_bit; //定義應(yīng)答信號(hào)
for(i=0;i<8;i++) // 循環(huán)移入8個(gè)位
{
SDA=(bit)(write_data & 0x80);
_nop_();
SCL = 1;
_nop_();
_nop_();
SCL = 0;
write_data=write_data<<1;
}
SDA = 1; // 讀取應(yīng)答
_nop_();
_nop_();
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ack_bit=SDA;
SCL = 0;
return ack_bit; // 返回AT24Cxx應(yīng)答位
}
這是原函數(shù)
1、SDA=(bit)(write_data & 0x80);我的這行代碼有一些疑惑,不知道我的理解是否正確,我們寫入的數(shù)據(jù)比如說(shuō)是1000 0000&1000 0000那么結(jié)果就是1000 0000只取最高位,是這樣嗎?
2、SDA = 1; // 讀取應(yīng)答
_nop_();
_nop_();
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ack_bit=SDA;
SCL = 0;
return ack_bit; // 返回AT24Cxx應(yīng)答位
主機(jī)和從機(jī)的SDA是同一根線吧?SDA=1是設(shè)置總線為空閑狀態(tài),SCL從1到0是為了傳輸傳輸信號(hào)。定義的應(yīng)答信號(hào)是從機(jī)的嗎?最后返回應(yīng)答位給主調(diào)函數(shù)。還是不太明白這個(gè)ack_bit存在的意義。
求解