📄 eeprom.c
字号:
#include"EEPROM.h"
void Delay_10_uS(){
__no_operation();
}
void Delay_N_mS(unsigned int n)
{
unsigned char i;
while(n--)
{
i=230;
while(i--);
}
}
void I2C_Start(void)
{
P5DIR|=BIT1+BIT2;
SCL_LOW();
Delay_10_uS();
SDA_HIGHT();
Delay_10_uS();
SCL_HIGHT();
Delay_10_uS();
SDA_LOW();
Delay_10_uS();
}
void I2C_Stop(void)
{
P5DIR|=BIT1+BIT2;
SCL_LOW();
Delay_10_uS();
Delay_10_uS();
SDA_LOW();
Delay_10_uS();
SCL_HIGHT();
Delay_10_uS();
SDA_HIGHT();
Delay_10_uS();
Delay_10_uS();
}//送单字节
void send_char(char var)
{
P5DIR|=BIT1+BIT2;
for(unsigned char i=0;i<8;i++)
{
SCL_LOW();
Delay_10_uS();
if((var&(0x80>>i))) SDA_HIGHT();
else SDA_LOW();
SCL_HIGHT();
Delay_10_uS();
Delay_10_uS();
}
SCL_LOW();
Delay_10_uS();
Delay_10_uS();
SDA_HIGHT();
SCL_HIGHT();
Delay_10_uS();
Delay_10_uS();
P5DIR&=~BIT1;
while((P5IN&0x02)==0x02);
SCL_LOW();
}
//送多个字节
void send_string(char *data_array,char Start_address)
{
unsigned int i=0;
I2C_Start();
send_char(0xa0);
send_char(0x00);
send_char(Start_address);
for(i=Start_address;i<(Start_address+16);i++)
{
send_char(data_array[i]); //调发送单字节子程序
}
I2C_Stop();
}
//读单个字符
unsigned char read_char(unsigned char hilow)
{
unsigned char i=0,var=0;
P5DIR|=BIT2+BIT1;
SDA_HIGHT();
P5DIR&=~BIT1;
for(i=0;i<8;i++)
{
SCL_HIGHT();
Delay_10_uS();
Delay_10_uS();
var<<=1;
if(P5IN&BIT1)
var|=0x01;
SCL_LOW();
Delay_10_uS();
Delay_10_uS();
}
P5DIR|=BIT1;
if(hilow==1) SDA_HIGHT();
else SDA_LOW();
Delay_10_uS();
SCL_HIGHT();
Delay_10_uS();
Delay_10_uS();
SCL_LOW();
Delay_10_uS();
Delay_10_uS();
return var;
}
//读多个字符
void read_string(char *data_array,char Start_address)
{
int j=0;
I2C_Start();
send_char(0xa0);
send_char(0x00);
send_char(Start_address);
I2C_Start();
send_char(0xa1);
for(j=Start_address;j<(Start_address+15);j++)
{
data_array[j]=read_char(0);
}
data_array[j]=read_char(1);
I2C_Stop();
}
void send_pages(char *array)
{
char addr;
for(int i=0;i<6;i++)
{
addr=i<<4;
send_string(array,addr);
Delay_N_mS(10);
}
}
void read_pages(char *array)
{
char addr;
for(int i=0;i<6;i++)
{
addr=i<<4;
read_string(array,addr);
Delay_N_mS(10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -