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

📄 x5045和x5043的读写程序.txt

📁 X5043的读写子程序
💻 TXT
字号:
X5045的读写子程序,应用在一个程控装置上用于自动复位和数据记录。

//---------------------------------
//x5045子程序
//---------------------------------
void RESWDI(void) //复位看门狗(喂狗)
{
CS = 0;
CS = 1;
}

void WREN(void) //写使能锁存
{
SCK=0;
CS=0;
OUTByte(0x06); //发送06H写使能命令字
SCK=0;
CS=1;
}

void WRDI(void) //写使能复位(禁止写)
{
SCK=0;
CS=0;
OUTByte(0x04); //发送04H写禁止命令字
SCK=0;
CS=1;
}

void WRSR(void) //写状态寄存器
{
SCK=0;
CS=0;
OUTByte(0x01); //发送01H写寄存器命令字
OUTByte(0x20); //发送寄存器值BL0,BL1为0没写保护,WD0=0 WD1=1看门狗复位时间为200ms
SCK=0;
CS=1;
WIPCHK(); //判断是否写入
}

unsigned char RSDR(void) //读状态寄存器
{
unsigned char Temp;

SCK=0;
CS=0;
OUTByte(0x05); //发送05H读状态寄存器命令字
Temp = INPUTByte(); //读状态寄存器值
SCK=0;
CS=1;
return Temp;
}

void WIPCHK(void) //reentrant //检查WIP位,判断是否写入完成
{
unsigned char Temp,TempCyc;

for(TempCyc=0;TempCyc<50;TempCyc++)
{
Temp = RSDR(); //读状态寄存器
if (Temp&0x01==0)
TempCyc = 50; 
}
}

void OUTByte(unsigned char Byte) //输出一个定节
{
unsigned char TempCyc;

for(TempCyc=0;TempCyc<8;TempCyc++)
{
SCK = 0;
SI = Byte & 0x80;
Byte = Byte<<1; //右移
SCK = 1;
}
SI=0; //使SI处于确定的状态
}

unsigned char INPUTByte(void) //输入一个字节
{
unsigned char Temp=0, TempCyc;

for(TempCyc=0;TempCyc<8;TempCyc++)
{
Temp = Temp<<1; //右移
SCK = 0;
if (SO) 
Temp = Temp|0x01; //SO为1,则最低位为1
SCK = 1;
}
return Temp;
}

unsigned char ReadByte(unsigned char ADD) //读地址中的数据这里不做先导字处理,只能读00-FFH
{
unsigned char Temp;

SCK=0;
CS=0;
OUTByte(0x3); //发送读指令03H 如要支持000-FFF则要把高位地址左移3位再为03H相或
OUTByte(ADD); //发送低位地址
Temp = INPUTByte();
SCK=0;
CS=1;
return Temp;
}

void WriteByte(unsigned char Byte,ADD) //向地址写入数据这里同样不做先导字处理,只能写00-FFH
{
SCK=0;
CS=0;
OUTByte(0x2); //发送写指令02H 如要支持000-FFF则要把高位地址左移2位再为02H相或
OUTByte(ADD); //发送低位地址
OUTByte(Byte); //发送数据
SCK=0;
CS=1;
WIPCHK(); //判断是否写入
}

⌨️ 快捷键说明

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