?? i2c_s.c
字號:
#include<REG66x.H>
/* 主器件函數庫 */
/*******************************************
設置總線函數
用于設置I2C控制寄存器,包括總線時鐘,速率及從地址.不接受廣播地址
********************************************/
void setbus(unsigned char addr)
{
S1ADR=addr&0xfe; // 設置從地址,屏蔽高7位即廣播地址響應位復位
S1CON=0XC5; // 啟動硬件I2C
}
/*******************************************
接收數據
讀取總線傳來的字節數據并發送應答位.
正常接收返回1,此時讀入的數據寫入變量c.
接收到總線結束信號或重新啟動總線信號時返回0,此時不破壞變量c的數據
********************************************/
bit recvbyte(unsigned char *c)
{
S1CON = 0XC5; // 清除標志位
while(SI == 0); // 放開總線等待接收
if(S1STA == 0xa0)
{
S1CON = 0XC5; // 先放開總線再返回0
return 0;
}
*c = S1DAT; // 取數據
return 1;
}
/*******************************************
發送數據
向總線發送數據c,當接收到非應答位時返回0,否則返回1
********************************************/
bit sendbyte(unsigned char c)
{
if(S1STA == 0xc0)
{
S1CON = 0XC5;
return 0;
}
S1DAT = c; // 發送數據
S1CON = 0XC5; // 釋放總線
while(SI == 0); // 等待字節數據發送完成
return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -