其功能是51單片機向mpu寫入一個字節,然后有mpu在串行數據線(SDA)給51一個應答信號;
根據文檔的說明:如下:
我對應答信號的理解是:
51向mpu發送完8位數據,如果mpu應答,會在第9個時鐘時,拉低數據線SDA.所以我的應答代碼如下:
void Write_ACK()
{
SCL=1;
SDA=1;
while(SDA); //用while判斷SDA有沒有被拉低,
}
或
void Write_ACK()
{
SCL=1;
while(SCL); //如果從設備忙,他會使SCL保持在低電平.用while判斷mpu是不是在忙,
}
事實情況是這兩種都不理想;第一個進入死循環,第二個沒收到過反饋;
這是在網上找的51單片機與mpu6050通信代碼的一段.
他是用PSW寄存器的進位標志位CY進行數據發出的,
他接收應答用的還是CY,返回CY后,并沒有對CY做任何判斷,
他是怎么判斷有沒有收到mpu的應答信號的?
還是CY有什么特性?(我在網上沒找到相關知識);
|