📄 at24m.txt
字号:
#include <reg52.h>
#include <intrins.h>
#define Uchar unsigned char
#define Uint unsigned int
sbit SDA=P3^2; //数据
sbit SCL=P1^2; //时钟
sbit POWER=P1^0; //电源
sbit RST=P1^1; //复位
sbit CHECK=P3^3; //检卡
void NOP(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
// _nop_();
// _nop_();
// _nop_();
// _nop_();
// _nop_();
// _nop_();
}
void mDelay(Uchar j)
{
Uint i;
for(;j>0;j--)
{
for(i=0;i<125;i--)
{;}
}
}
void Start(void)
{
SDA=0;
NOP();
SCL=0;
NOP();
}
void Stop(void)
{
SCL=1;
NOP();
SDA=1;
NOP();
}
void Ack(void)
{
SDA=0;
NOP();
SCL=1;
NOP();
SCL=0;
SDA=1;
}
void NoAck(void)
{
SDA=1;
NOP();
SCL=1;
NOP();
SCL=0;
SDA=1;
}
void Send(Uchar Data)
{
Uchar BitCounter=8;
do
{
Data<<=1;
SDA=CY;
SCL=1;
NOP();
SCL=0;
BitCounter--;
}while(BitCounter);
}
Uchar Read(void)
{
Uchar temp=0;
Uchar BitCounter=8;
do
{
SDA=1;
NOP();
SCL=1;
NOP();
temp<<=1;
if(SDA)
temp++;
NOP();
SCL=0;
NOP();
BitCounter--;
}while(BitCounter);
return(temp);
}
void WrToRom(Uchar Data[],Uchar Address,Uchar Num)
{
Uchar i;
Uchar *PData;
PData=Data;
for(i=0;i<Num;i++)
{
Start();
Send(0xa0);
Ack();
Send(Address+i);
Ack();
Send(*(PData+i));
Ack();
Stop();
mDelay(20);
}
}
void RdFromRom(Uchar Data[],Uchar Address,Uchar Num)
{
Uchar i;
Uchar *PData;
PData=Data;
Start();
Send(0xa0);
Ack();
Send(Address+i);
Ack();
SDA=1;
SCL=1;
Start();
Send(0xa1);
Ack();
for(i=0;i<Num;i++)
{
*(PData+i)=Read();
if(i!=Num-1)
Ack();
else
NoAck();
}
Stop();
}
Uchar AT24C64_Open()
{
// Uchar i, TmpSt[10];
POWER=1;
NOP();
SCL=0;
NOP();
RST=0;
NOP();
RST=1;
NOP();
SDA=1;
NOP();
SCL=1;
NOP();
SCL=0;
NOP();
RST=0;
/* for(i=0;i<4;i++) TmpSt[i]=Read();
if(TmpSt[0]==0xFF) return 1;
if(TmpSt[1]==0xFF) return 1;
if(TmpSt[2]==0xFF) return 1;
if(TmpSt[3]==0xFF) return 1;*/
return 0;
}
Uchar AT24C64_Close()
{
SDA=0;
NOP();
SCL=0;
NOP();
RST=0;
NOP();
POWER=0;
NOP();
return 0;
}
void main()
{
Uchar Number[4]={1,2,3,4};
if(CHECK==0)
{
AT24C64_Open();
WrToRom(Number,4,4);
AT24C64_Close();
mDelay(20);
AT24C64_Open();
RdFromRom(Number,4,4);
AT24C64_Close();
mDelay(20);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -