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

📄 x25045.c

📁 AT89C51与I2C总线接口芯片X5045的接口程序
💻 C
字号:
/*=========================================================================================*/
/*张刚--最后修改于2006年02月27日*/

/*带4KEEROP的看门狗芯片处理子程序*/
/*=========================================================================================*/
#include <reg52.h>
#include <constdef.h> 

sbit X25045Wp=P3^5;
sbit X25045So=P3^6;  
sbit X25045Cs=P3^7;
sbit X25045Si=P3^3;
sbit X25045Sck=P3^4;

#define WRSR    0x01
#define WRITE   0x02
#define READ    0x03
#define WRDI    0x04
#define RDSR    0x05
#define WREN    0x06
#define TIME    0x00 

void WatchDog()
{
  X25045Cs=1;
  X25045Cs=0;
}

void ToX25045(uchar cData)
{  
  uchar i;   
  for(i=0;i<8;i++)
     {
       X25045Sck=0;
       if(cData&0x80)
         X25045Si=1;
       else
         X25045Si=0;
       X25045Sck=1;
       cData<<=1;
     } 
  X25045Si=0;
}
        
uchar FromX25045()
{                     
  uchar i;
  uchar iData;
  uchar cData=0;
  for(i=0;i<8;i++)
     {
       X25045Sck=1;
       X25045Sck=0;
       if(X25045So)
         cData|=0x01;
       iData=cData;
       cData<<=1;
     } 
  return(iData);
}

uchar ReadState()
{
  uchar cData;
  X25045Sck=0;
  X25045Cs=0;
  ToX25045(RDSR);
  cData=FromX25045();
  X25045Sck=0;
  X25045Cs=1;
  return(cData);
}

void Wait()   
{
  uchar i;
  for(i=0;i<200;i++)
     {
       if((!ReadState()&0x01))
         break; 
     }
}        

     
void WriteX25045Enable()
{
  X25045Sck=0;
  X25045Cs=0;
  ToX25045(WREN);
  X25045Sck=0;
  X25045Cs=1;
}           

 
void WrtieX25045Disable()
{
  X25045Sck=0;
  X25045Cs=0;
  ToX25045(WRDI);
  X25045Sck=0;
  X25045Cs=1;
}          

           
void WriteX25045(uchar cAddress,uchar cByte)
{ 
  WriteX25045Enable();  
  X25045Sck=0;
  X25045Cs=0; 
  ToX25045(WRITE);
  ToX25045(cAddress);
  ToX25045(cByte);
  X25045Sck=0;
  X25045Cs=1;
  Wait();
  WrtieX25045Disable(); 
}



uchar ReadX25045(uchar cAddress)
{ 
  uchar cByte; 
  X25045Sck=0;
  X25045Cs=0;
  ToX25045(READ);
  ToX25045(cAddress);
  cByte=FromX25045();
  X25045Sck=0;
  X25045Cs=1;
  return(cByte);
}
           
void WriteX25045State()
{
  WriteX25045Enable(); 
  X25045Sck=0;
  X25045Cs=0;
  ToX25045(WRSR);
  ToX25045(TIME);
  X25045Sck=0;
  X25045Cs=1;
  Wait();
  WrtieX25045Disable();
}
        
void WriteX25045D(uchar cAddress,uint iData)
{
  WriteX25045(cAddress*2,(uchar)iData); 
  WriteX25045(cAddress*2+1,(uchar)(iData>>8)); 
}   

uint ReadX25045D(uchar cAddress)
{
  uint cByte;
  cByte=(uint)ReadX25045(cAddress*2+1);
  cByte<<=8;
  cByte=cByte+(uint)ReadX25045(cAddress*2);
  return(cByte);
}

⌨️ 快捷键说明

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