📄 fmeeprom_rw.h
字号:
// fm eeprom
// eeprom duo fa 1 stop 2 kai shi shi xian fa stop zai start
unsigned char rfmeeprom_status;
struct fmbit_eep
{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
};
union fmbyte_eep
{
struct bit_eep bit;
unsigned char byte;
};
void fmeeprom_start()
{
sclk0=1;
sda0=1;
sdr_clk0=1;
sdr_sda0=1;
sclk0=1;
sda0=1;
delay_4();
sda0=0;
delay_4();
sclk0=0;
delay_4();
}
void fmeeprom_stop()
{
sdr_sda0=1;
sclk0=0;
sda0=0;
delay_4();
sclk0=1;
sda0=1;
delay_4();
}
void fmeeprom_wb(unsigned char a)
{
unsigned char a1;
union byte_eep eeprom_use;
sdr_sda0=1;
eeprom_use.byte=a;
for(a1=8;a1>0;a1--)
{
sda0=eeprom_use.bit.b7;
delay_4();
sclk0=1;
//delay_4();
eeprom_use.byte=eeprom_use.byte<<1;
sclk0=0;
//delay_4();
}
delay_4();
}
unsigned char fmeeprom_rb()
{
unsigned char a1;
union byte_eep eeprom_use;
sda0=1;
sdr_sda0=0;
delay_4();
for(a1=8;a1>0;a1--)
{
sclk0=1;
//delay_4();
eeprom_use.byte=eeprom_use.byte<<1;
eeprom_use.bit.b0=sda0;
sclk0=0;
//delay_4();
}
return eeprom_use.byte;
}
unsigned char fmeeprom_ack()
{unsigned char a;
a=0;
sdr_sda0=0;
delay_4();
sclk0=1;//
//sdr_sda0=0;
//while((a!=100)&&(sda!=0))
//{a++;}
delay_4();
//while(sda0==1)
//{;}
while((a!=30)&&(sda0!=0))
{a++;}
if(a==30)
a=0;
else
a=1;
sclk0=0;
delay_4();
return a;
}
unsigned char readfmeeprom(unsigned char a)
{unsigned char i,value; //a==0 kao lv
dr_wp0=1;
wp0=1;
value=0;
//rfmeeprom_status=true;
fmeeprom_stop();
fmeeprom_start();
fmeeprom_wb(0xa0);//a0 //eeprom_wb(0xa0|((data_addr.addrc[2]<<1)&0xe));
if(1==fmeeprom_ack())
//if(rfmeeprom_status==true)
{
fmeeprom_wb(data_addr.addrc[1]); //eeprom_wb(data_addr.addrc[1]);
if(1==fmeeprom_ack())
// if(rfmeeprom_status==true)
{
fmeeprom_wb(data_addr.addrc[0]); //{eeprom_wb(data_addr.addrc[0]);
if(1==fmeeprom_ack())
//if(rfmeeprom_status==true)
{//eeprom_stop();
fmeeprom_start();
fmeeprom_wb(0xa1); //a1 //eeprom_wb(0xa1|((data_addr.addrc[2]<<1)&0xe));
if(1==fmeeprom_ack())
//if(rfmeeprom_status==true)
{
for(i=0;i<a;i++)
{
wr_data[i]=fmeeprom_rb();
if(i<(a-1))
{//eeprom_ack();
sda0=0;
sdr_sda0=1;
sda0=0;
delay_4();
sclk0=1;
delay_4();
sclk0=0;
sdr_sda0=0;
delay_4();
}
else
{// jia fe no ack
sda0=1;
sdr_sda0=1;
sda0=1;
delay_4();
sclk0=1;
delay_4();
sclk0=0;
sdr_sda0=0;
delay_4();
fmeeprom_stop();
value=1;
}
}
}
else
{
fmeeprom_stop();
value=0;
}
}
else
{
fmeeprom_stop();
value=0;
}
}
else
{
fmeeprom_stop();
value=0;
}
}
else
{
fmeeprom_stop();
value=0;
}
return value;
}
unsigned char writefmeeprom(unsigned char a)
{unsigned char i,value; //a==0 kao lv
dr_wp0=1;
wp0=0;
value=0;
//rfmeeprom_status=true;
if(writecommand=writecommand_fm)
{
fmeeprom_stop();
fmeeprom_start();
fmeeprom_wb(0xa0); //a0 //eeprom_wb(0xa0|((data_addr.addrc[2]<<1)&0xe));
if(1==fmeeprom_ack())
//if(rfmeeprom_status==true)
{
fmeeprom_wb(data_addr.addrc[1]);
if(1==fmeeprom_ack())
//if(rfmeeprom_status==true)
{
fmeeprom_wb(data_addr.addrc[0]);
if(1==fmeeprom_ack())
// if(rfmeeprom_status==true)
{
value=1;
for(i=0;i<a;i++)
{
fmeeprom_wb(wr_data[i]);
if(0==fmeeprom_ack())
{
value=0;
i=a;
}
}
fmeeprom_stop();
return value;
}
else
{
fmeeprom_stop();
return 0;
}
}
else
{
fmeeprom_stop();
return 0;
}
}
else
{
fmeeprom_stop();
return 0;
}
}
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -