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

📄 data_readwrite.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:


//#include "fmeeprom1.h"
// DING YI CHANG SHU
// 256
// rom---i,v,type,mode
extern void read7758(unsigned char addr,unsigned char num);
extern void write7758(unsigned char addr,unsigned char num);

extern void do_ledspeek(unsigned char,unsigned char);
unsigned char read(a,b)
// a------store type
// b------date num
unsigned char a;
unsigned char b;
{unsigned char d1,d2,value; 
 unsigned long l;
 unsigned int l1;
 unsigned char h;
 union k1 {
                  unsigned char s[2];
                  unsigned int   w;
                  }d0;
 value=0;
 if(b!=0)
 	{
  		switch(a)
  			{ 
  				case  RRAM :          
							value=1;
  	                     		// xian zhi
  	                     			for(d1=0;d1<b;d1++)
  	                     				{
  	                     					if(data_addr.addri<LENRAM)
  	                     	    					wr_data[d1]=RAM[data_addr.addri];
  	                             				data_addr.addri=data_addr.addri+1;
								}
  	                     			break;
  	
  	 	
  	  			case FM:  
							value=0;
  	  	              			for(d1=0;d1<3;d1++)
  	  	                  				{
  	  	                  					if(1==readfmeeprom(b))
  	  	                 	    					{
  	  	                 	    						value=1;
  	  	                         						d1=3;
										}
  	  	              				}
  	  	              			break;
  	 
  	 			case EPLOCK:
  	  			case EP1:       
//				case EP2:       

							value=0;
					if(a==EP1) 
					{
						h=0xa2;
					}
//					else
//						{if(a==EP2) 
//					{	h=0xa4;}
  	  	            else 
					{	h=0xa6;}
//						}
  	                    				for(d1=0;d1<3;d1++)
  	  	                   				{
  	  	                   					if(1==read_byte(b,h))
  	                     	     					{
  	                     	     						value=1;
  	                                 						d1=3;
  	                                 					}
  	                           					else 
											delay_1ms();
  	                     				}
  	  	              			break;  	 
  	  		  case ROM:  
			  				value=1;	                    
  	  	             				for(d1=0;d1<b;d1++)  
  	  	             	    				{
  	  	             	    					if((data_addr.addrc[0]+d1)<100)
  	  	             	           					wr_data[d1]=display_enable[data_addr.addrc[0]+d1];
  	  	               				}
  	  	             				break; 	  
  			} 

  	 } 	
do_ledspeek(value,0); 
return value;
 }
  
// if ep1 or eplock  len must be <61 byte
 unsigned char write(a,b)
unsigned char a;
unsigned char b;
// a------store type
// b------date num
{unsigned char d1,d2,value;
 unsigned char len;
 unsigned int address;
 unsigned char h;
value=0;
if(b!=0)
{
  switch(a)
  	{ 
  		case   RRAM : 
					value=1;// xiang zhi
  	                     	for(d1=0;d1<b;d1++)
  	                       		{
  	                       			if(data_addr.addri<LENRAM)
  	                             			RAM[data_addr.addri]=wr_data[d1];
  	                        			data_addr.addri=data_addr.addri+1;
						}
  	                     	break;
  	  	case  FM:
  	  	              	writecommand=writecommand_fm;
  	  	              	value=0;
  	  	              	for(d1=0;d1<3;d1++)
  	  	                  		{ 
  	  	                  			if(1==writefmeeprom(b))
  	  	                   				{
  	  	                   					value=1;
  	  	                     				d1=3;
								}
  	  	              		}
  	  	              	break;  	
  	  	case  EP1:
//  	  	case  EP2:
  	  	case EPLOCK:
					if(a==EP1) 
					{
						h=0xa2;
					}
//					else
//						{if(a==EP2) 
//					{	h=0xa4;}
  	  	            else 
					{	h=0xa6;}
//						}
                    writecommand=writecommand_eeprom;
  	  	// changed 64 byte one time
  	  	             		address=data_addr.addrc[0];
  	  	             		if((address/64)==((address+b-1)/64))
  	  	             			{// support 24c128 24c256
  	  	             				system_control_time0=system_control_time0+1;
  	  	             	 			value=0;
  	  	             	  			for(d1=0;d1<3;d1++)
  	  	                         		if(1==write_byte(b,h))
  	  	                          			{
  	  	                          				value=1;
  	  	                                  			d1=3;
								}
  	  	                         		else 
								delay_10ms();
  	  	             			}
  	  	             		else
  	  	             			{
                               			system_control_time0=system_control_time0+2;
  	  	             	   			len=64-address%64;
  	  	                    			value=0;
  	  	                    			for(d1=0;d1<3;d1++)
  	  	             	      				{
  	  	             	      					if(1==write_byte(len,h))
  	  	             	      	  					{
  	  	             	      	  						value=1;
  	  	             	           						d1=3;
										}
  	  	             	        				else 
					       				delay_10ms();
								}
  	  	             	  			  if(value==1)
  	  	             	  				{
  	  	             	        				delay_10ms();
  	  	             	        				data_addr.addri=data_addr.addri+len;
  	  	             	        				for(d1=0;d1<b-len;d1++)
  	  	             		 	 				wr_data[d1]=wr_data[d1+len];
  	  	             	        				value=0;
  	  	             	          				for(d1=0;d1<3;d1++)
  	  	              	                			{
  	  	              	                				if(1==write_byte(b-len,h))
  	  	              	                					{
  	  	              	                						value=1;
  	  	              	                     					d1=3;
												}
  	  	              	                				else 
												delay_10ms();
										}
  	  	             	  			}     
  	  	           		}
  	  	              delay_10ms();
  	  	              break; 	   	
			} 	
            }
writecommand=writecommand_start;
dr_wp0=1;
wp0=1;
do_ledspeek(value,0); 
return value;
}
 
 	
// add ting dian pan duan
  delay_10ms()
 {unsigned long l;
 	for(l=0;l<5000;l++)    //4000
 		{;}
  }

 // delay 1 ms
 delay_1ms()
{unsigned long l;
 for(l=0;l<500;l++)
 	{;}
}   

 




// flash   data_addr.addc[0]  [1] qu 0000----4096   [2] qu tong dao 0---5









⌨️ 快捷键说明

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