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

📄 eeprom_rw.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:
//    eeprom duo fa 1 stop      2 kai shi shi  xian fa stop    zai    start
#define false 0
#define true 1
unsigned char reeprom_status;
struct bit_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 byte_eep
	{
    		struct bit_eep bit;
   		unsigned char byte;
	};
void delay_4()
{;}
void eeprom_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();// add 2003-3-10 long
}
void eeprom_stop()
{
sdr_sda0=1;
sclk0=0;
sda0=0;
delay_4();
sclk0=1;
sda0=1;
delay_4();
}
void eeprom_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 eeprom_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 eeprom_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;
}
/*



if(sda!=0) {reeprom_status=false;
sdr_sda=1;
sclk=0;
sda=0;
delay_4();
sclk=1;
sda=1;
delay_4();}

else {reeprom_status=true;
sclk=0;
delay_4();
}
}*/

unsigned char read_byte(a,addr)
unsigned char a,addr;
{unsigned char i,l;      //a==0 kao lv
l=0;
dr_wp0=1;
wp0=1;
eeprom_stop();
//reeprom_status=true;
eeprom_start();
eeprom_wb(addr);//a2                               //eeprom_wb(0xa0|((data_addr.addrc[2]<<1)&0xe));
if(1==eeprom_ack())
//if(reeprom_status==true)
  {
   	eeprom_wb(data_addr.addrc[1]);                                           //eeprom_wb(data_addr.addrc[1]);
   	if(1==eeprom_ack())
    //if(reeprom_status==true)
       	{
       		eeprom_wb(data_addr.addrc[0]);                                             //{eeprom_wb(data_addr.addrc[0]);
         		if(1==eeprom_ack())
       // if(reeprom_status==true)
          			{//eeprom_stop();
          				eeprom_start();
          				eeprom_wb(addr|0x1);   //a3                                                      //eeprom_wb(0xa1|((data_addr.addrc[2]<<1)&0xe));
          				if(1==eeprom_ack())
         // if(reeprom_status==true)
            					{
            						for(i=0;i<a;i++)
                						{
                							wr_data[i]=eeprom_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();
										}                
                  //   reeprom_status=true;     
                 //   if(reeprom_status==true) continue;
                //          else i=a;}                         
                 							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();
                 									eeprom_stop();
                 									l=1;
                     							}
          							}
                   				 }
              			else 
              	 			{
              	 				eeprom_stop();
                       				l=0;
						}
                  			}
      				else 
      	       			{
      	       				eeprom_stop();
               				l=0;
					}
              		}
 		 else 
  	   		{
  	   			eeprom_stop();
            			l=0;
	   		 }
  		}
  	else 
  	   	{
  	   		eeprom_stop();
           		l=0;
		}
return l;
}

// kou ling
unsigned char write_byte(a,addr)
unsigned char a,addr;
{unsigned char i,value;     //a==0 kao lv
dr_wp0=1;
wp0=0;
if(writecommand==writecommand_eeprom)
	{
   		eeprom_stop();
//reeprom_status=true;
   		eeprom_start();
   		eeprom_wb(addr);    //a2                                     //eeprom_wb(0xa0|((data_addr.addrc[2]<<1)&0xe));
   		if(1==eeprom_ack())
//if(reeprom_status==true)
      			{
        			eeprom_wb(data_addr.addrc[1]);
         			if(1==eeprom_ack())
   // if(reeprom_status==true)
             				{
             					eeprom_wb(data_addr.addrc[0]);
               				if(1==eeprom_ack())
       // if(reeprom_status==true)
                   					{
                   						value=1;
                    						for(i=0;i<a;i++)
                        						{
                        							eeprom_wb(wr_data[i]);                
                          							if(0==eeprom_ack())
                    	        							{
                    	        								i=a;
                               								value=0;
											}
                     						}
                   //  if(reeprom_status==true) continue;
                     //     else i=a;}
                      					eeprom_stop();
                      					return value;
                     				}
                				else
               					{
               						eeprom_stop();
                     					return 0;
							}
                  			 }
          			else
               			{
               				eeprom_stop();
                     			return 0;
					}
                 		}
		else
               	{
               		eeprom_stop();
                     	return 0;
			}
   	}
else
     	return 0;
}
           



 


⌨️ 快捷键说明

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