?? i2c.c
字號:
//**********************************************************
// I2C總線驅動程序源文件
//**********************************************************
#include<reg52.h>
#include<intrins.h>
#include<I2C.h>
void Start(void) //IC2總線開始信號
{
SDA = 1; //發送起始條件的數據信號
SCL = 1;
_nop_();
SDA = 0; //發送起始信號
SCL = 0;
_nop_(); //鉗住I2C總線準備發送或接收數據
}
void Stop(void) //I2C總線結束信號
{
SCL = 0;
SDA = 0; //發送結束條件的數據信號
SCL = 1;
_nop_();
SDA = 1;
_nop_(); //發送結束信號
}
void Ack() //主機發送應答信號
{
SDA=0;
_nop_();
SCL=0;
SCL=1;
_nop_();
SCL=0;
SDA=1;
}
void NoAck() //主機發送不應答信號
{
SDA=1;
SCL=0;
SCL=1;
SCL=0;
SDA=0;
}
bit Test_Ack(void) //主器件接收應答信號
{
bit Error;
SDA = 1; //釋放數據總線,準備接收應答位
SCL = 1; //置時鐘線為高電平,使數據線上數據有效
Error=SDA;
SCL = 0;
return Error;
}
void Write_OneByte(unsigned char Data) //主機向I2C器件寫一字節數據
{
uchar i;
for(i=8 ; i ; --i)
{
SDA=(bit)(Data&0x80);
SCL=0;
SCL=1;
SCL=0;
Data <<= 1;
}
}
unsigned char Read_OneByte(void) //主機從I2C總線上讀一字節數據
{
uchar i;
uchar Data = 0;
for( i=8 ; i ; --i)
{
SCL = 0;
SCL = 1; //置時鐘線為高電平,使數據線上數據有效
Data <<= 1;
Data=Data|((unsigned char)(SDA));
SCL = 0;
}
return Data;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -