51微控制器軟體模擬i2c學習記錄

2021-10-09 18:30:49 字數 626 閱讀 9742

剛學學stm32的i2c時,一大堆的配置,配置起來也麻煩。看著手裡有塊51開發板,就學著用軟體模擬i2c。

#include #define uchar unsigned char

#define uint unsigned int

sbit sda=p0^1;

sbit scl=p0^0;

void delayms(uchar num);

//起始訊號

void i2c_start()

//停止訊號

void i2c_stop()

//主機應答訊號

void master_ack(u8 ack)

//寫入乙個位元組

uchar i2c_write_byte(uchar buffer)

} return 1;

}//讀取乙個位元組

uchar i2c_read_byte(uchar ack)

if(ack)//主機應答狀態

else

return temp;

}void main()

void delayms(uchar num)

{ uchar i,j;

for(i=0;i筆記記錄,如有誤請指出,謝謝!

微控制器的I2C常規知識

i2c有8位資料,為7位選址 r w。當scl為高電平時,sda從高電平向低電平切換,為i2c的起始條件。當scl為低電平時,sda由低電平向高電平切換,為i2c的停止條件。scl保持低電平,主機則處於等待狀態。ack為響應,傳送完乙個資料後等待響應。從i2c接收乙個位元組 1 初始化 i2c st...

微控制器之I2C匯流排原理

採用序列匯流排技術可以大大簡化硬體的設計,體積減少,可靠性高。常見的匯流排,i2c inter ic bus 單匯流排,spi匯流排。i2c序列匯流排 1 進行多主機通訊 2 兩根雙線訊號線,一根資料線sda,另外一根時鐘線scl,接上拉電阻,匯流排空閒為高電平。只要有低電平,匯流排就會被拉低電平。...

微控制器 I2C匯流排通訊程式

為保證資料的可靠性,i2c匯流排的資料傳送有嚴格的時序要求。i2c匯流排的起始訊號 終止訊號 傳送 0 及傳送 i2c匯流排寫操作,待寫入位元組dat,返回值為應答狀態 i2c sda 1 8位資料傳送完後,主機釋放sda,以檢測從機應答 i2cdelay i2c scl 1 拉高scl ack i...