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

📄 at24cxx.c

📁 单片机汇编例程学习,大量的汇编例程
💻 C
字号:
#include <Intrins.h>#include <At89x51.h>#include "constant.h"#include "function.h"#include "variable.h"#include "chinese_const.h"// first byte: 1010A2P1P2R/W//#define EEPROM_ADDRESS 0XA0  	//device addresse:10100000//#define AT24C08_A2_OPTION0 0X00	//A2 address :00000000 or 00001000//#define AT24C08_A2_OPTION1 0X08//#define AT24C08_PAGE0 0X00	//page address P1,P0:00000000//#define AT24C08_PAGE1 0X02	//00000010//#define AT24C08_PAGE2 0X04	//00000100//#define AT24C08_PAGE3 0X06  //00000110//#define I2C_EEPROM_READ		0X01//#define I2C_EEPROM_WRITE 	0X00    //Read and Write:W-00000000,R-00000001void I2c_Start()	//SDA,SCL=1 after start.{SDA=1;SCL=1;SDA=0;I2c_Bus_Delay();SCL=0;I2c_Bus_Delay();}	//================================/*send one byte(include address,device ID,data)*///================================bit	I2c_Write_Byte(unsigned char byte){unsigned char i=8, temp;while(i--)   {	temp=byte;	SDA=(bit)(temp&0x80);		//get bit7 of data	byte<<=1;	SCL=1;	I2c_Bus_Delay();	SCL=0;   }	SDA=1;			   //release bus for acknowledge	I2c_Bus_Delay();	SCL=1;	I2c_Bus_Delay();	SCL=0;return SDA;		//return acknowledg signal}//=============================unsigned char I2c_Read_Byte(){unsigned char Data=0,i=8;SDA=1;while(i--)	{		Data<<=1;		SCL=1;		I2c_Bus_Delay();		Data|=SDA;		SCL=0;	}return Data;}//============================//send acknowledge signal//1: no ack//0: ack//============================void I2c_Send_Ack(bit Ack){SDA=Ack;SCL=1;I2c_Bus_Delay();SCL=0;}//=============================//stop sent or read//=============================void I2c_Stop(){SCL=0;SDA=0;SCL=1;I2c_Bus_Delay();SDA=1;I2c_Bus_Delay();		//don't need}//=============================================//===7 uS delay time{3(nop)+2(ret)+2(acall)}===//=============================================void I2c_Bus_Delay()		{	_nop_();_nop_();}//=============================// byte write,ack no check//page:0--3 //address:0-255//=============================void At24c08_Write_Byte(unsigned char page,unsigned char address,unsigned char byte){	page<<=1;	I2c_Start();	I2c_Write_Byte(EEPROM_ADDRESS|page|AT24C08_A2_OPTION0|I2C_EEPROM_WRITE);	I2c_Write_Byte(address);	I2c_Write_Byte(byte);  I2c_Stop();}//===============================// byte random read,ack no check//page:0--3 //address:0-255//===============================unsigned char At24c08_Randomread_Byte(unsigned char page,unsigned char address)		{unsigned char i;	page<<=1;	I2c_Start();	I2c_Write_Byte(EEPROM_ADDRESS|page|AT24C08_A2_OPTION0|I2C_EEPROM_WRITE);	I2c_Write_Byte(address);	I2c_Bus_Delay();  //restart	I2c_Start();	I2c_Write_Byte(EEPROM_ADDRESS|page|AT24C08_A2_OPTION0|I2C_EEPROM_READ);	i=I2c_Read_Byte();	I2c_Send_Ack(1);	I2c_Stop();	return i;}	

⌨️ 快捷键说明

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