?? hi2csla_c51.h
字號:
/*****************************************************************
* 從方式的LPC932硬件I2C
* 1 使用I2C總線軟件包時P1.2,P1.3切勿寫為0,并要設置為開漏輸出。
* 2 總線定義為P1.2=SCL,P1.3=SDA,需外接上拉電阻2-10k。
* 3 相應寄存器:
* 地址寄存器 I2ADR 用于存放自身從地址(從方式時才有用)
* 數(shù)據(jù)寄存器 I2DAT 接收/發(fā)送數(shù)據(jù)用
* 控制寄存器 I2CON 用于硬件I2C的設置、使能、啟動、結束,
* 應答控制,中斷標志等。
* 狀態(tài)寄存器 I2STAT 指示I2C總線的操作狀態(tài)碼,高5位有效,
* 若I2C中斷志置位,可查詢此寄存器判斷
* 總線情況。
* SCL占空比寄存器 I2SCLH、I2SCLL 設置SCL的頻率發(fā)生。
* 設置最好與主機的SCL頻率基本一至。
* 使用:使用前要先開中斷:總中斷EA和I2C中斷允許EI2C,其中斷入口地址為33H;
* 在中斷里進行接收或發(fā)送數(shù)據(jù)操作,調(diào)用操作如下:
* 若是從接收,則循環(huán)調(diào)用RcvByte接收字節(jié)數(shù)據(jù),直至總線結束/重啟;
* 若是從發(fā)送,則循環(huán)調(diào)用SendByte發(fā)送數(shù)據(jù),直至接收到非應答信號;
* 為了防止從器件因總線出錯而死機,可用定時器實現(xiàn)超時處理。
*****************************************************************/
#ifndef HI2CSLA_C51_H
#define HI2CSLA_C51_H
/*當狀態(tài)字I2STAT為0X60時,是總線對從器件寫操作;若為0XA8則是對從器件讀操作*/
#define RDSLA 0xA8 /* 讀從器件的總線狀態(tài)字(進入此狀態(tài)后用SENDBYTE發(fā)送數(shù)據(jù)) */
#define WRSLA 0x60 /* 寫從器件的總線狀態(tài)字(進入此狀態(tài)后用RCVBYTE取總線數(shù)據(jù))*/
/*****************************************************************
設置總線
函數(shù)原型: void SetBus(unsigned char addr)
描述:用于設置I2C控制寄存器,包括總線時鐘速率及從地址.
從地址為addr,不接受廣播地址.
*****************************************************************/
extern void SetBus(unsigned char addr);
/***************************************************************
發(fā)送字節(jié)數(shù)據(jù)
函數(shù)原型:bit SendByte(uchar c)
描述:向總線發(fā)送數(shù)據(jù)c,當接收到非應答位時返回0,否則返回1;
***************************************************************/
extern bit SendByte(unsigned char c);
/***************************************************************
接收字節(jié)數(shù)據(jù)
函數(shù)原型:bit RcvByte(uchar *c)
描述:讀取總線傳來的字節(jié)數(shù)據(jù)并發(fā)送應答位,正常接收返回1(此時讀入的
數(shù)據(jù)寫入變量c),接收到總線結束信號或重新啟動總線信號時返回0(此時不
破壞變量c的數(shù)據(jù))。
***************************************************************/
extern bit RcvByte(unsigned char *c);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -