📄 24c64.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 + -