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

📄 per.c

📁 该模板使用于周立功公司研发的EasyARM2100系列开发板
💻 C
字号:
#include  "config.h"



/*********************************************************************************************************
** 函数名称: Delay()	
** 功能描述: 延时
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 吴成加
** 日   期: 2008年3月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/	
 void Delay(uint32 dly)
{
	uint32 i;uint32 j;
	for(j=0;j<dly;j++)
	{
		for(i=0;i<9;i++);
	}
}
/*********************************************************************************************************
** 函数名称: write_enable()	
** 功能描述: 写使能控制	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 吴成加
** 日   期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/	
 void write_enable(void)
{  
  uint8  i=0;
  uint8 dump=0xc0; 
   
  cs_set;    //C46_CS=1;
  Delay(1);

  sck_clr;   //MCLK=0;
  si_set;    //MOSI=1;
  Delay(1);
  sck_set;   //MCLK=1;

  Delay(1);
  sck_clr;   //MCLK=0;
  si_clr;    //MOSI=0;
  Delay(1);
  sck_set;   //MCLK=1;

  Delay(1);
  sck_clr;   //MCLK=0;
  si_clr;    //MOSI=0;
  Delay(1);
  sck_set;   //MCLK=1;  


  for(i=0;i<7;i++)
  {  Delay(1);   
     sck_clr;       //MCLK=0;
     if(dump&0x80)   si_set;
     else            si_clr;
	 Delay(1);
    sck_set;      //MCLK=1;
    dump=(dump<<1);
   }
   Delay(1);
   sck_clr;        //MCLK=0;
   Delay(1);
   cs_clr;         //C46_CS=0;

} 
 /*********************************************************************************************************
** 函数名称: write_disable()	
** 功能描述: 写禁止	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 吴成加
** 日   期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void write_disable(void)
{
  uint8  i=0;
  uint8 dump=0x00; 
 
  cs_set;    //C46_CS=1;
  Delay(1);

  sck_clr;   //MCLK=0;
  si_set;    //MOSI=1;
  Delay(1);
  sck_set;   //MCLK=1;

  Delay(1);
  sck_clr;   //MCLK=0;
  si_clr;    //MOSI=0;
  Delay(1);
  sck_set;   //MCLK=1;

  Delay(1);
  sck_clr;   //MCLK=0;
  si_clr;    //MOSI=0;
  Delay(1);
  sck_set;   //MCLK=1;  

  for(i=0;i<7;i++)
  {  Delay(1);   
     sck_clr;       //MCLK=0;
     if(dump&0x80)   si_set;
     else            si_clr;
	 Delay(1);
    sck_set;      //MCLK=1;
    dump=(dump<<1);
   }
   Delay(1);
  sck_clr;        //MCLK=0;
   Delay(1);
  cs_clr;         //C46_CS=0;
}
/*********************************************************************************************************
** 函数名称: ee_write()	
** 功能描述: 向指定的地址单元写入一个数	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: write_enable(),write_disable()	
** 作   者: 吴成加
** 日   期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ee_write(unsigned char address , unsigned char data)
{
   uint8  i=0; 
   uint32 rd_tmp;
   write_enable();
  
   address=address|0x80;
   
   Delay(1);   
   cs_set;    //C46_CS=1;
   Delay(1);

   sck_clr;   //MCLK=0;
   si_set;    //MOSI=1;
   Delay(1);
   sck_set;   //MCLK=1;

   Delay(1);
   sck_clr;   //MCLK=0;
   si_clr;    //MOSI=0;
   Delay(1);
   sck_set;   //MCLK=1;

  
  for(i=0;i<8;i++)
     {
	 Delay(1);
     sck_clr;           //MCLK=0;
     if(address&0x80)   si_set;
     else               si_clr;
     Delay(1);
     sck_set;         //MCLK=1;
     address=address<<1;
     }

  for(i=0;i<8;i++)
     {
     Delay(1);
     sck_clr;           //MCLK=0;
     if(data&0x80)   si_set;
     else            si_clr;
     Delay(1);
     sck_set;           //MCLK=1;
     data=data<<1;
     }

    Delay(1);
	sck_clr;
    cs_clr;             //C46_CS=0;



 	Delay(1);
    cs_set;             //C46_CS=1;
 while(1)
    {
     sck_clr;           // MCLK=0;
	 Delay(1);
     sck_set;           //MCLK=1;
	 Delay(1);
	 rd_tmp	=IO0PIN;
	 rd_tmp	&=0x00010000;
	 if(0x00010000==rd_tmp) break;
    }
    cs_clr;             //C46_CS=0;
 	write_disable();  
}
/*********************************************************************************************************
** 函数名称: ee_read()	
** 功能描述: 从指定的地址单元读出一个数据	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
 unsigned char ee_read(unsigned char address)
{
  
   uint8 i=0;
   uint8  rd_data;
   
   cs_set;            //C46_CS=1;
   Delay(1);

  sck_clr;   //MCLK=0;
  si_set;    //MOSI=1;
  Delay(1);
  sck_set;   //MCLK=1;

  Delay(1);
  sck_clr;   //MCLK=0;
  si_set;    //MOSI=1;
  Delay(1);
  sck_set;   //MCLK=1;

  Delay(1);
  sck_clr;   //MCLK=0;
  si_clr;    //MOSI=0;
  Delay(1);
  sck_set;   //MCLK=1;
    
  address=(address<<1);
 for(i=0;i<8;i++)
    {
     Delay(1);
     sck_clr;           //MCLK=0;
     if(address&0x80)   si_set;
     else            si_clr;
     Delay(1);
     sck_set;           //MCLK=1;
     address=(address<<1); 
    }

  
	rd_data=0;
 for(i=0;i<8;i++)
    {  
	rd_data=rd_data<<1;
       sck_set;           //MCLK=1;
	  Delay(1);  
	 // rd_tmp	=IO0PIN;
	//  rd_tmp	&=0x00800000;
	//  if(0x00800000==rd_tmp) 
	   if( (IO0PIN&0x00010000)!=0 ) 
		{
			rd_data=rd_data | 0x01;
		
		}
		else
		{
			;	
		}		

       sck_clr;           //MCLK=0; 
	   Delay(1);
	   
    }
     Delay(1); Delay(1);
    cs_clr;             //C46_CS=0;
    return rd_data;
}  



       

⌨️ 快捷键说明

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