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

📄 twi.h

📁 C语言实现的基于AVR 8位单片机的TWI通讯! 通过中断服务程序中的状态机
💻 H
字号:
#ifndef __AT24C02__H
#define __AT24C02__H

//TWI状态定义
//MT 主方式传输  MR 主方式接收
#define START 					0x08 
#define RE_START 				0x10
#define MT_SLA_ACK 				0x18
#define MT_SLA_NOACK 			0x20
#define MT_DATA_ACK  			0x28
#define MT_DATA_NOACK 			0x30
#define MR_SLA_ACK  			0x40
#define MR_SLA_NOACK 			0x48
#define MR_DATA_ACK 			0x50
#define MR_DATA_NOACK 			0x58

//常用TWI操作(主模式写和主模式读)

#define Start()    	  	(TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE))
#define Stop()     	  	(TWCR=((1<<TWINT)|(1<<TWSTO)|(1<<TWEN))&(~(1<<TWIE)))
#define TestAck() 	(TWSR&0xf8)
#define Twi()	  	  	(TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
#define Write8Bit(x)  	{TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWIE);} 

#define BUSY_PORT     		PORTG_Bit3
#define BUSY_DDR			DDRG_Bit3
#define SetI2C_Busy()   		{BUSY_DDR =1;BUSY_PORT =0;}
#define ReleaseI2C_Busy()	{BUSY_DDR =0;BUSY_PORT =1;}
#define I2C_BUSY()			PING_Bit3


enum __I2CEESAVE{I2CSAVE_NULL=0,I2C_KEY,I2C_MENUID,I2C_CALLTIME,I2C_TIME};
extern unsigned char g_i2ceesave;								//I2CEEPROM保存标志
enum __ADDEEPROM{ADD_LCD=1,ADD_KEYFLAG=2,ADD_CURKEY=3,ADD_MENUID=4,
						ADD_CALLTIME=5,ADD_TIME=6,ADD_IP=6+10,
						    ADD_PORT=6+10+5};


//读写函数
unsigned char I2C_Write(unsigned char Wdata,unsigned char RomAddress) ;
unsigned char I2C_Read(unsigned char RomAddress);
void I2C_Init(void);

//读写操作中间变量
extern unsigned char EE_STATE;					//EEPROM操作状态
extern unsigned char EE_DATA;					//写入的数据
extern unsigned char EE_ADD;					//写入的地址

#endif   /*__AT24C02__H*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -