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

📄 source.h

📁 基于EEPROM AT24C64的数据存储
💻 H
字号:
#define EXT_INT0      0
#define T0_INT        1
#define EXT_INT1      2
#define T1_INT        3
#define SERL_INT      4
#define T2_INT        5

#define TIMER2H           		0xc4 //10ms
#define TIMER2L           		0x00
#define TIMER0H         		(256-13)//20us  
#define TIMER_NUM    8
#define WRITE_TIMER   0
#define READ_TIMER   1
#define WRITE_TIMER_LEN 400 //4 second.
#define READ_TIMER_LEN  200 //2 second

#define SCL                P3_4
#define SDA                P3_5
#define EEPROMWPN         XBYTE[0XFC34]
#define EEPROMCSN         P1_0
#define EEPROMSO          P1_1
#define EEPROMSI          P1_2
#define EEPROMSCK         P1_3
#define EEPROM_MAX_SPACE  8192
#define EEPROM_PAGE_LEN   32
#define OffsetOf(Struct,Field)	(unsigned int)(&(((Struct *)0)->Field))

#define WRITE_BIT    0
#define READ_BIT     1
#define STOP  	     2
#define DATA         3
#define LOW_ADDRESS_WRITE  4
#define HIGH_ADDRESS_WRITE 5
#define LOW_ADDRESS_READ   6
#define HIGH_ADDRESS_READ  7
#define DEVICE_READ        8
#define DATA_READ          9
#define DATA_WRITE         10

#define OK  0
#define NOK 1

/*为一个宏定义,由此可以得出来结构体成员在结构中的位置*/
union char_int{
	unsigned int nt;
	unsigned char ar[2];
};
typedef struct{
	unsigned char vol;
	unsigned int  cnt;
	unsigned char buf[1024];
}EEPROM_DATA;
struct MY_TIMER{
	unsigned char enable;
	unsigned int  count;
	unsigned int  length;
	unsigned char flag;
};
typedef struct I2c_desc{
		unsigned char state;
		unsigned char operate;
		unsigned char Error;
		unsigned char I2CByte;
		unsigned int  loadAddress;
		unsigned char deviceAddress;
		unsigned char mode;
		unsigned int  nbI2CByte;
		unsigned char countBit;
		unsigned char nb_ACK;
		void (*I2CTCHandler) (struct I2c_desc *I2C_pt);
		void (*I2cFinish)    (struct I2c_desc *);
		unsigned int Timer_Gap_us;
		unsigned char *TxEnd;
		unsigned char *RxEnd;
		unsigned int Timer_Gap_ms;
				
}I2Cdesc;
typedef struct {
	unsigned int eeprom_read_over;
	unsigned int eeprom_write_over;
	unsigned int eeprom_read_ok;
	unsigned int time_read_over;
	unsigned int time_write_over;
	unsigned int temperature_read_over;
	unsigned int dealing;
} TMDEV_OPS;
extern I2Cdesc	I2c;	//the device decriptor
extern unsigned char  eeprom_write(unsigned int adr, unsigned int len, unsigned char *src);
extern unsigned char  eeprom_read(unsigned int adr, unsigned int len, unsigned char *src);

extern void I2CWrite (I2Cdesc *I2C_pt, unsigned int loadAddress, unsigned int nbByte);
extern void I2CRead (I2Cdesc *I2C_pt, unsigned int loadAddress, unsigned int nbByte);

extern void  I2CTxSendByte (I2Cdesc *I2C_pt);
extern void  I2CTxSendDeviceAddress (I2Cdesc *I2C_pt);
extern void  I2CTxSendBit (I2Cdesc *I2C_pt);
extern void  I2CRxReceiveByte (I2Cdesc *I2C_pt);
extern void  I2CRxReceiveBit (I2Cdesc *I2C_pt);

extern void  I2CTxSendStartSDA (I2Cdesc *I2C_pt);
extern void  I2CTxSendStartSCL (I2Cdesc *I2C_pt);
extern void  I2CTxPrepareSTOP (I2Cdesc *I2C_pt);
extern void  I2CTxSendStopSCL (I2Cdesc *I2C_pt);
extern void  I2CTxSendStopSDA (I2Cdesc *I2C_pt);
extern void  I2CTxPrepareACK (I2Cdesc *I2C_pt);
extern void  I2CTxWaitACK (I2Cdesc *I2C_pt);
extern void  I2CRxDoACK (I2Cdesc *I2C_pt);

extern void  I2CTxSetSCL (I2Cdesc *I2C_pt);
extern void  I2CTxClearSCL (I2Cdesc *I2C_pt);
extern void  I2CRxSetSCL (I2Cdesc *I2C_pt);
extern void  I2CRxClearSCL (I2Cdesc *I2C_pt);

extern void Stop_I2c_Timer(void);
extern void Start_I2c_Timer(unsigned int us);

extern void I2C_lineOpen (I2Cdesc *I2C_pt, unsigned int us);
extern void I2CError(I2Cdesc *I2C_pt);

extern void At24c64_Init(void);
extern void At24c64_Read(unsigned char *buf,unsigned int adr,unsigned int len);
extern void At24c64_Write(unsigned char *buf,unsigned int adr,unsigned int len);

⌨️ 快捷键说明

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