#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...