📄 x5045.c
字号:
#include"main.h"
#include"x5045.h"
/*
void eeprom(void)
{
wr_sr(0) ;
}
*/
uchar rd_sr(void)
{
uchar sr;
SCK=0;
CS=0; /*时钟输入变低,CS片选为低电平*/
write_byte(0x05); /*写读状态寄存器命令*/
sr=read_byte(); /*读取状态字节*/
SCK=0;
CS=1; /*时钟输入变低,CS片选为低电平*/
return sr;
}
/*x5045写状态寄存器函数~~~~~~~~~~~~~~~~~~~~~~*/
void wr_sr(uchar sr)
{
//WP=1;
wren(); /*调写允许函数*/
SCK=0; /*SCK为时钟输入*/
CS=0; /*CS片选*/
write_byte(0x01); /*写状态寄存器命令*/
write_byte(sr); /*设置1.4秒的看门狗,不保护数据*/
SCK=0;
CS=1;
wipchk();
}
/* x5045写一个字节数据函数~~~~~~~~~~~~*/
void write_byte(uchar dt)
{
uchar i;
for(i=0;i<8;i++)
{
SCK=0;
SI = dt & 0x80;
// if(dt&0x80)
// SI=1;
//else
// SI=0;
SCK=1; // SCK时钟输入,时钟上升沿锁存数据;
dt=dt<<1;
}
SI=0;
}
/* x5045读一个字节函数~~~~~~~~~~~*/
uchar read_byte(void)
{
uchar i,byte=0;
for(i=0;i<9;i++) //这里很怪,要循环9次
{
byte=byte<<1;
SCK=1;
// SCK时钟输入,时钟下降沿锁存数据
if(SO==1)
byte+=1;
SCK=0;
}
return byte;
}
/*x5045置位写允许函数~~~~~~~*/
void wren(void)
{
SCK=0;
CS=0;
write_byte(0x06); //写允许命令
SCK=0;
CS=1;
}
//x25045标志忙查询函数~~~~~~~~~~~~~~~~~~~~~~~~
/*
void sr_busy(void)
{
uchar i,j;
i=1;j=0;
while (i)
{
i=rd_sr();
if(!(i&0x01))
i=0;
j++;
if(j>=230)
i=0; //如果延时到,强行退出,2005年5月9日---防止出现死机,导致通信中断和显示4个8
}
}
*/
void wipchk(void) //reentrant //检查WIP位,判断是否写入完成
{
uchar Temp,TempCyc;
for(TempCyc=0;TempCyc<50;TempCyc++)
{
Temp = rd_sr(); //读状态寄存器
if (Temp&0x01==0)
TempCyc = 50;
}
}
/*
void write_ee(uchar add,uchar dat) // n数据地址.x被写数据
{
wren(); //调写允许函数
SCK=0;
CS=0; //CS片选为低电平/
write_byte(0x0a); //使用EEPROM的下半部分256个字节
write_byte(add); //数据的被写地址
write_byte(dat); //写数据
SCK=0;
CS=1;
wipchk();
}
uchar read_ee(uchar add) //被读出数据个数为1
{
uchar m; //x为读出的数据的地址
SCK=0;
CS=0; ///CS片选
write_byte(0x0b); //写读入命令
write_byte(add); //写入要读的数据单元地址
m=read_byte(); //读入数据存m中
SCK=0;
CS=1; //CS片选为高电平,结束读过程
return m;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -