微控制器IIC匯流排 實測通過

2021-09-19 20:41:10 字數 2265 閱讀 6837

#include

"iic.h"

void

delayms

(unsigned

int ms)

//毫秒級延時函式

while

(--i);}

}void

delay2us()

//2us延時,用於穩定io狀態

void

iic_delay()

//iic延時,需大於4.7us,這裡取8us

void

iic_io_init()

//io口初始化,使匯流排處於空閒狀態

void

iic_start()

//匯流排開始

void

iic_stop()

//匯流排結束

void

iic_ack()

//應答

void

iic_nack()

//無應答

bit iic_waitack()

//0 有應答 1 無應答

iic_scl =0;

iic_delay()

;return0;

// 有應答

}void

iic_writebyte

(uchar dat)

//向從裝置寫一位元組資料

else

iic_delay()

; iic_scl =1;

dat<<=1;

iic_delay()

; iic_scl =0;

} iic_sda =1;

iic_scl =1;

iic_delay()

;}unsigned

char

iic_readbyte()

//由從裝置讀取一位元組資料

return dat;

}//以下兩個函式非通用,不同iic裝置會有差異

void

iic_writedata

(unsigned

char deciceaddress,

unsigned

char registeraddress,

unsigned

char dat)

//裝置位址+寫訊號 暫存器位址 資料

unsigned

char

iic_readdata

(unsigned

char deciceaddress,

unsigned

char registeraddress)

//裝置位址+寫訊號 暫存器位址

微控制器(六) IIC匯流排

iic是積體電路匯流排,它是一種序列匯流排,iic只有兩根雙向訊號線,一根資料線sda,一根訊號線scl。要掌握iic匯流排通訊協議,需要掌握以下六點 1.起始訊號。2.終止訊號。3.寫資料。4.讀資料。5.應答訊號。6.非應答訊號。下面我們來看看他們各自的時序。由此我們可以寫出他的程式 起始 vo...

51微控制器學習之IIC匯流排

核心思想 主機與從機之間的資訊交換。主機傳送訊息,從機要回應一下。從機傳送訊息,主機也要回應。注意點 sda線和scl線都是預設高電平。即高電平為釋放狀態。include include typedef unsigned char u8 typedef unsigned int u16 void d...

郭天祥51微控制器教程 IIC匯流排

include define uchar unsigned char sbit sda p2 0 資料匯流排 sbit scl p2 1 時鐘匯流排 void delay 大概延時5us void delay1 uchar x 這是乙個寫資料的整體過程 void wirte add uchar ad...