#ifndef __TWI_H__
#define __TWI_H__
#ifndef F_CPU
#define F_CPU 7372800 //晶振,注意有可能CONFIG.H里面已经定义的情况
#endif
#ifndef F_IIC_SCL
#define F_IIC_SCL 25000 //晶振,注意有可能CONFIG.H里面已经定义的情况
#endif
#define TWI_MOD 0 //主机;1 从机:0
#define SCL 5
#define SDA 4
#define TWI_PORT PORTC
#define TWI_DIR DDRC
//twi.h里面有定义,现附上中文描述
//主机发送状态码
#define START 0x08 //START已发送
#define REP_START 0x10 //重复START已发送
#define MT_SLA_ACK 0x18 //SLA+W 已发送收到ACK
#define MT_SLA_NACK 0x20 //SLA+W 已发送接收到NOT ACK
#define MT_DATA_ACK 0x28 //数据已发送接收到ACK
#define MT_DATA_NACK 0x30 //数据已发送接收到NOT ACK
#define TW_MT_ARB_LOST 0x38 //SLA+W 或数据的仲裁失败
//主机接收状态码
//#define TW_START 0x08 //START已发送
//#define TW_REP_START 0x10 //重复START已发送
#define MR_ARB_LOST 0x38 //SLA+R 或NOT ACK 的仲裁失败
#define MR_SLA_ACK 0x40 //SLA+R 已发送接收到ACK
#define MR_SLA_NACK 0x48 //SLA+R 已发送接收到NOT ACK
#define MR_DATA_ACK 0x50 //接收到数据ACK 已返回
#define MR_DATA_NACK 0x58 //接收到数据NOT ACK已返回
//从机接收状态码
#define SR_SLA_ACK 0x60 //自己的SLA+W 已经被接收ACK已返回
#define SR_ARB_LOST_SLA_ACK 0x68 //SLA+R/W 作为主机的仲裁失败;自己的SLA+W 已经被接收ACK 已返回
#define SR_GCALL_ACK 0x70 //接收到广播地址ACK 已返回
#define SR_ARB_LOST_GCALL_ACK 0x78 //SLA+R/W 作为主机的仲裁失败;接收到广播地址ACK已返回
#define SR_DATA_ACK 0x80 //以前以自己的SLA+W被寻址;数据已经被接收ACK已返回
#define SR_DATA_NACK 0x88 //以前以自己的SLA+W被寻址;数据已经被接收NOT ACK已返回
#define SR_GCALL_DATA_ACK 0x90 //以前以广播方式被寻址;数据已经被接收ACK已返回
#define SR_GCALL_DATA_NACK 0x98 //以前以广播方式被寻址;数据已经被接收NOT ACK已返回
#define SR_STOP 0xA0 //在以从机工作时接收到STOP或重复START
//从发送状态码
#define ST_SLA_ACK 0xA8 //自己的SLA