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

📄 spi93c46.h

📁 c51语言的93C46驱动程序
💻 H
字号:
/*----------------------------------------------------------------------------
读写E2ROM函数
93c46 操作函数列表
ReadRom(unsigned char address)              //读 address 中的内容
WriteRom(unsigned char address, int Word)   //将 Word 写入address 单元
Erase(unsigned char address)                // 擦除某一单元
------------------------------------------------------------------------------*/

/*---------- 注意事项----------------------------------------------------------
  如果IO口与别的器件共用,在读、写之前应先将其复位为1.
  例:
      P1=0xff;
      WriteRom(1,0x1234);
------------------------------------------------------------------------------*/

//#include "reg51.h"

//对从芯片而言
sbit SPI_CS =P1^0;
sbit SPI_SK =P1^1;
sbit SPI_DI =P3^0;
sbit SPI_DO =P3^1;


void start()
{ SPI_SK=0;
  SPI_CS=1;
  SPI_DI=1;
  SPI_SK=1;
}

// SPI_SK上升沿数据有效 _/-
SPI_WriteBits(unsigned char byte,unsigned char num_of_bits)
{
  unsigned char count;
  byte=byte<<(8-num_of_bits);

 for(count=0;count<num_of_bits;count++)
   { SPI_SK=0;
     byte<<=1;
     SPI_DI=CY;
     SPI_SK=1;
    }
}

// SPI_SK上升沿数据有效 _/-
unsigned char SPI_ReadByte()
{
  unsigned char count,byte;
  for(count=0;count<8;count++)
     {  SPI_SK=0;
        byte<<=1;
        SPI_SK=1;
        if(SPI_DO) byte++;
     }
  return(byte);
}


//93C46 查除/写入允许
void EWEN()
{           //EWENChar=0x30;
  start();
  SPI_WriteBits(0x00,2);
  SPI_WriteBits(0x30,6);
  SPI_CS=0;
 }

void EWDS()
{    //EWDSChar=0x00;
  start();
  SPI_WriteBits(0x00,2);
  SPI_WriteBits(0x00,6);
  SPI_CS=0;
}

unsigned int ReadRom(unsigned char address)  //读 address 中的内容
{
  unsigned int RomWord=0;

  start();
  SPI_WriteBits(0x02,2);
  SPI_WriteBits(address,6);
  RomWord=SPI_ReadByte();
  RomWord=RomWord<<8;
  RomWord=RomWord | SPI_ReadByte();
  SPI_CS=0; /////////
  return(RomWord);
}

void WriteRom(unsigned char address, unsigned int Word)
{
  EWEN();  //93C46 查除/写入允许
  start(); //启动 93C46
  SPI_WriteBits(0x01,2);
  SPI_WriteBits(address,6);

  //发送数据
  SPI_WriteBits( (unsigned char)(Word>>8),8);
  SPI_WriteBits( (unsigned char)(Word),8);
  SPI_CS=0;
  SPI_CS=1;
  while(!SPI_DO);
  SPI_CS=0;
  EWDS();
}

⌨️ 快捷键说明

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