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

📄 fmeeprom_rw.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 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 + -