?? twi.h
字號(hào):
/*******************************************
* I2C(TWI)操作函數(shù) *
* 文 件 名:TWI.h *
* 函數(shù)功能:利用CPU的硬件TWI接口操作 *
* 設(shè) 計(jì):張子鳳 *
* 修改日期:2008年11月11日 *
* 版 本:V1.0 *
* 主控芯片:Mega16 *
*******************************************/
//宏定義
//狀態(tài)寄存器TWSR各種狀態(tài)定義
//主模式啟動(dòng)狀態(tài)
#define START 0x08 //啟動(dòng)總線
#define RESTART 0x10 //重新啟動(dòng)總線
//主發(fā)送模式各種狀態(tài)
#define MT_SLA_ACK 0x18 //SLA_W寫地址已發(fā)送,收到應(yīng)答位
#define MT_SLA_NACK 0x20 //SLA_W寫地址已發(fā)送,收到非應(yīng)答位
#define MT_DATA_ACK 0x28 //寫入數(shù)據(jù)已發(fā)送,收到應(yīng)答位
#define MT_DATA_NACK 0x30 //寫入數(shù)據(jù)已發(fā)送,收到應(yīng)答位
#define MT_ARB_LOST 0x38 //SLA_W或數(shù)據(jù)仲裁失敗
//主接收模式各種狀態(tài)
#define MR_ARB_LOST 0x38 //
#define MR_SLA_ACK 0x40 //SLA_R已發(fā)送,收到應(yīng)答位
#define MR_SLA_NACK 0x48 //SLA_R已發(fā)送,收到非應(yīng)答位
#define MR_DATA_ACK 0x50 //接收到數(shù)據(jù),應(yīng)答位已返回
#define MR_DATA_NACK 0x58 //接收到數(shù)據(jù),非應(yīng)答位已返回
#define PCF8563_SLA_W 0xA2 //PCF8563寫從地址
#define PCF8563_SLA_R 0xA3 //PCF8563讀從地址
#define start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
#define stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
#define waitack() {while(!(TWCR&(1<<TWINT)));}
#define chkack() (TWSR&0xf8) //check ack
#define sendack() (TWCR|=(1<<TWEA))
#define sendnack() (TWCR&=~(1<<TWEA))
#define sendbyte(x) {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}
#define rcvnckbyte()(TWCR=(1<<TWINT)|(1<<TWEN))
#define rcvackbyte()(TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA))
/* I2C Config */
#define I2C_ERR 0
#define I2C_CRR 1
//TWI初始化
void Twi_Init(void)
{
TWBR=14;
TWSR=0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -