核心思想:主機與從機之間的資訊交換。
主機傳送訊息,從機要回應一下。
從機傳送訊息,主機也要回應。
注意點:sda線和scl線都是預設高電平。即高電平為釋放狀態。
#include
#include
typedef
unsigned
char u8;
typedef
unsigned
int u16;
void
delay10ms
(void
)//誤差 0us
void
delay1ms
(void
)//誤差 0us
sbit lsa=p2^2;
sbit lsb=p2^3;
sbit lsc=p2^4;
sbit k1=p1^0;
sbit k2=p1^1;
sbit k3=p1^2;
sbit k4=p1^3;
//定義按鍵埠
u8 sj=0;
u8 disp[8]
;u8 code smgduan[17]
=;//顯示0~f的值
void
keyjud()
while
(!k1);}
if(k2==0)
while
(!k2);}
if(k3==0)
while
(!k3);}
if(k4==0)
while
(!k4);}
}void
sjpros()
}void
digdisplay()
p0=smgduan[disp[
7-i]];
//傳送段碼
delay1ms()
;//間隔一段時間掃瞄
p0=0x00
;//消隱}}
void
main()
}```
#include
void
delay10us
(void
)//誤差 0us
void
iicstart()
void
iicstop()
unsigned
char
iicsend_byte
(unsigned
char date)
sda=1;
delay10us()
; scl=1;
delay10us()
;while
(sda)
} scl=0;
delay10us()
;return1;
}unsigned
char
iicread_byte()
return date;
}void
write
(unsigned
char date,
unsigned
char addr)
unsigned
char
read
(unsigned
char addr)
#ifndef __i2c_h__
#define __i2c_h__
#include
sbit scl=p2^1;
sbit sda=p2^0;
void
iicstart()
;void
iicstop()
;unsigned
char
iicsend_byte
(unsigned
char date)
;unsigned
char
iicread_byte()
;void
write
(unsigned
char date,
unsigned
char addr)
;unsigned
char
read
(unsigned
char addr)
;#endif
51微控制器 IIC
iic inter intergrated circuit 匯流排是一種由philips公司開發的兩線式序列匯流排。用於連線微控制器及其外圍裝置。iic只需兩根線sda 資料線 scl 時鐘 iic支援多主控,當然,在任何時間點上只能有乙個主控,而spi是一主多從。iic各種被控制電路均併聯在這條匯...
微控制器(六) IIC匯流排
iic是積體電路匯流排,它是一種序列匯流排,iic只有兩根雙向訊號線,一根資料線sda,一根訊號線scl。要掌握iic匯流排通訊協議,需要掌握以下六點 1.起始訊號。2.終止訊號。3.寫資料。4.讀資料。5.應答訊號。6.非應答訊號。下面我們來看看他們各自的時序。由此我們可以寫出他的程式 起始 vo...
郭天祥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...