.H文件预处理
typedef unsigned char INT8U; //0~255
typedef signed char INT8S; //-128~127
typedef unsigned int INT16U; //0~65535
typedef signed int INT16S; //-32768~32767
typedef unsigned long INT32U; //0~0xFFFFFFFF
typedef signed long INT32S; //0x8000 0000~7FFFFFFF
typedef float FP32; //Single precision floating point
typedef double FP64; //Double precision floating point
#define XTAL 1 //晶振频率,单位MHz
#define m_delayus(x) __delay_cycles((unsigned long)(x*XTAL))
#define m_delayms(x) __delay_cycles((unsigned long)(x*XTAL*1000UL))
#define m_delays(x) __delay_cycles((unsigned long)(x*XTAL*1000000UL))
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
//假设SCL是端口PD6,SDA是端口PD7,WP是端口PD5
#define m_EnE2pWrite PORTD&=~BIT5 //允许EEPROM读写
#define m_DiE2pWrite PORTD|=BIT5 //EEPROM只读
#define m_I2CWritePort DDRD|=BIT7 //I2C写时,SDA端口方向为输出
#define m_I2CReadPort DDRD&=~BIT7 //I2C读时,SDA端口方向为输入
#define m_SetSCL PORTD|=BIT6 //PD6=1,SCL置位
#define m_ClrSCL PORTD&=~BIT6 //PD6=0,SCL清0
#define m_SetSDA PORTD|=BIT7 //PD7=1,SDA置位
#define m_ClrSDA PORTD&=~BIT7 //PD7=0,SDA清0
#define m_SDAIn (PIND&BIT7) //SDA读入
#define m_I2C_Delay m_delayus(5) //I2C延时,不同器件可能不同
#define m_I2C_StopDelay m_delayms(10)