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

📄 drv_9346.c

📁 串行EE2PROM芯片93C46SPI接口驱动程序。
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                              
**                                    合肥皖仪生物电子公司
**                                                                          
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: drv_9346.c
**创   建   人: 吴成加
**最后修改日期: 2007年8月12日
**描        述: 
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 吴成加
** 版  本: v1.0  
** 日 期: 2007年8月12日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "\inc\system.h"
 //  ee_write(0x08,0x24); ee_value=ee_read(0x08); 

/*********************************************************************************************************
** 函数名称: write_enable()	
** 功能描述: 写使能控制	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 吴成加
** 日   期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/	

 void write_enable(void)
{  
  unsigned char  i=0;
  unsigned char dump=0xc0; //11******b
  
  C46_CS=1;
  
  MCLK=0;
  MOSI=1;
  MCLK=1;
  
  MCLK=0;
  MOSI=0;
  MCLK=1;
  
  MCLK=0;
  MOSI=0;
  MCLK=1;  //begin 


  for(i=0;i<7;i++)
  {    
    MCLK=0;
    if(dump&0x80)MOSI=1;
    else          MOSI=0;
    MCLK=1;
    dump=(dump<<1);
   }
  MCLK=0;
  C46_CS=0;
} 


 /*********************************************************************************************************
** 函数名称: write_disable()	
** 功能描述: 写禁止	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 吴成加
** 日   期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void write_disable(void)
{		
  unsigned char i=0;
  unsigned char dump=0x00; //00000***b


  C46_CS=1;
  MCLK=0;
  MOSI=1;
  MCLK=1;
  
  MCLK=0;
  MOSI=0;
  MCLK=1;
  
  MCLK=0;
  MOSI=0;
  MCLK=1;  //begin 


  for(i=0;i<7;i++){    
   MCLK=1;
   if(dump&0x80) MOSI=1;
   else         MOSI=0;
   MCLK=0;
   dump=(dump<<1);
  }
  C46_CS=0;

}



/*********************************************************************************************************
** 函数名称: ee_write()	
** 功能描述: 向指定的地址单元写入一个数	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: write_enable(),write_disable()	
** 作   者: 吴成加
** 日   期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void ee_write(unsigned char address , unsigned char data)
{
  unsigned char  i=0; 

  write_enable();
  
  C46_CS=1;
 
  MCLK=0;
  MOSI=1;
  MCLK=1;
  
  MCLK=0;
  MOSI=0;
  MCLK=1;
  
  MCLK=0;
  MOSI=1;
  MCLK=1;  //begin 

  for(i=0;i<7;i++){
   MCLK=0;
   if(address&0x80) MOSI=1;
   else             MOSI=0;
   MCLK=1;
   address=address<<1;
  }
 
  for(i=0;i<8;i++){
   MCLK=0;
   if(data&0x80)    MOSI=1;
   else             MOSI=0;
   MCLK=1; 
   data=data<<1;
 }

 C46_CS=0;
 
 C46_CS=1;
 while(1){
   MCLK=0;
   if(MISO==1)	break;
   MCLK=1;
 }
 C46_CS=0;
 
 write_disable();  
}
/*********************************************************************************************************
** 函数名称: ee_read()	
** 功能描述: 从指定的地址单元读出一个数据	
** 输   入:      
** 输   出:       
** 全局变量:	
** 调用模块: 	
** 作   者: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

 unsigned char ee_read(unsigned char address)
{
 unsigned char dump=0;
 unsigned char i=0;


 C46_CS=1;

  MCLK=0;
  MOSI=1;
  MCLK=1;
  
  MCLK=0;
  MOSI=1;
  MCLK=1;

  MCLK=0;
  MOSI=0;
  MCLK=1;

 for(i=0;i<8;i++){
  MCLK=0;
  if(address&0x80)  MOSI=1;
  else              MOSI=0;
  MCLK=1;
  address=(address<<1);
 }

 for(i=0;i<8;i++){
  MCLK=1;
  dump=(dump<<1);
  dump|=MISO;
  MCLK=0; 
 }
 C46_CS=0;
 return dump;
}  


⌨️ 快捷键说明

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