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

📄 24c64.c

📁 24位AD压力实验板 protell99se打开
💻 C
字号:

#include "24C64.h"
/* WriteWord(0x0a,0x12);
   WriteWord(0x0b,0x24);
   ee_data[0]=0;
   ee_data[0]=ReadWord(0x0a);
    ee_data[1]=0;
   ee_data[1]=ReadWord(0x0b);*/



//--------------------------------------------
//--------以下为24C64读写子函数
//Delay_ee 函数程序//功能:延时子程序
//==========================================
 void Delay_ee(unsigned int n)
{

 while(n--);

}


//=========================================
//START 函数程序
//功能:开始闪存操作
//==========================================
void Start(void)
{
  SCL_OUT;
  SDA_OUT;
  SDA_1;
  Delay_ee(10);
  SCL_1;
  Delay_ee(10);
  SDA_0;
  Delay_ee(10);
  SCL_0;
  Delay_ee(10);
}

//=========================================
//STOP 函数程序
//功能:停止闪存操作
//==========================================
void Stop(void)
{
  SDA_0;
  Delay_ee(10);
  SCL_1;
  Delay_ee(10);
  SDA_1;
  Delay_ee(10);
}



void TX_Byte(unsigned char WriteData)
{
  unsigned char i,j;
  j=WriteData;
  SDA_OUT;
  for (i=0; i<8; i++)
  {
    if((j&0x80)==0)
    { SDA_0;}
    else
    { SDA_1;}
    j <<=1;
    Delay_ee(10);
    SCL_1;
    Delay_ee(10);
    SCL_0;
    Delay_ee(10);
  }
}



unsigned char RX_Byte(void)
{
  unsigned char i;
  unsigned char TempData = 0;
  SDA_IN;
  for (i=0; i<8; i++)
  {
    Delay_ee(10);
    SCL_1;
    Delay_ee(10);
    TempData <<= 1;
    if (J_SDA_1_or_0)
    { TempData++; }
    SCL_0;
    Delay_ee(10);
  }
  SDA_OUT;
  return(TempData);
}
//=========================================
//ACK 函数程序
//功能:挂高电平表示闪存时钟信号
//==========================================
void ReceiveAck(void)
{
  SDA_IN;
  SCL_1;
  Delay_ee(10);
  while (J_SDA_1_or_0)
  { ; }
  SCL_0;
  SDA_OUT;
  Delay_ee(10);
}



unsigned char ReadWord(unsigned long int  unit/*address*/)
{
  unsigned char LowAdd  = 0;
  unsigned char HighAdd = 0;
  unsigned char  TempData = 0;
  LowAdd  = (unsigned char)unit;
  HighAdd = (unsigned char)(unit >> 8);
  SDA_OUT;
  Start();
  TX_Byte(0xa0);
  ReceiveAck();
  TX_Byte(HighAdd);
  ReceiveAck();
  TX_Byte(LowAdd);
  ReceiveAck();
  Start();
  TX_Byte(0xa1);
  ReceiveAck();
  TempData  = RX_Byte();  
  Stop();
  Delay_ee(800);  
  return(TempData);
}


void WriteWord(unsigned long int unit/*address*/, unsigned char WriteData)
{
  unsigned char LowAdd  = 0;
  unsigned char HighAdd = 0;
  LowAdd  = (unsigned char)unit;
  HighAdd = (unsigned char)(unit >> 8);
  Start();
  TX_Byte(0xa0);
  ReceiveAck();
  TX_Byte(HighAdd);
  ReceiveAck();
  TX_Byte(LowAdd);
  ReceiveAck();
  TX_Byte(WriteData);
  ReceiveAck();
  Stop();
  Delay_ee(800);
}

⌨️ 快捷键说明

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