⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twi.h

📁 pcf8563开发
💻 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 + -