📄 x25045.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 + -