?? twi._h
字號:
/*******************************************
* I2C(TWI)操作函數 *
* 文 件 名:TWI.h *
* 函數功能:利用CPU的硬件TWI接口操作 *
* 設 計: *
* 修改日期:2008年11月11日 *
* 版 本:V1.0 *
* 主控芯片:Mega16 *
*******************************************/
//宏定義
//狀態寄存器TWSR各種狀態定義
//主模式啟動狀態
#define START 0x08 //啟動總線
#define RESTART 0x10 //重新啟動總線
//主發送模式各種狀態
#define MT_SLA_ACK 0x18 //SLA_W寫地址已發送,收到應答位
#define MT_SLA_NACK 0x20 //SLA_W寫地址已發送,收到非應答位
#define MT_DATA_ACK 0x28 //寫入數據已發送,收到應答位
#define MT_DATA_NACK 0x30 //寫入數據已發送,收到應答位
#define MT_ARB_LOST 0x38 //SLA_W或數據仲裁失敗
//主接收模式各種狀態
#define MR_ARB_LOST 0x38 //
#define MR_SLA_ACK 0x40 //SLA_R已發送,收到應答位
#define MR_SLA_NACK 0x48 //SLA_R已發送,收到非應答位
#define MR_DATA_ACK 0x50 //接收到數據,應答位已返回
#define MR_DATA_NACK 0x58 //接收到數據,非應答位已返回
#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;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -