📄 dogfun.c
字号:
#include <reg51.h>
#include <dogfun.h>
uchar RSDR(void); //读状态寄存器
void WRSR(uchar WDG);//写状态寄存器
void WIPCHK(void); //判断是否写入
void OUTByte(uchar Byte); //写一个定节
void wren_cmd(void);
uchar INPUTByte(void); //读一个字节
uchar RSDR(void) //读状态寄存器
{
uchar Temp;
SCK=0;
CS=0;
OUTByte(0x05); //发送05H读状态寄存器命令字
Temp = INPUTByte(); //读状态寄存器值
SCK=0;
CS=1;
return Temp;
}
void WRSR(uchar WDG) //写状态寄存器
{ uchar i;
P1=0x30;
for(i=0;i<10;i++); //初始化5045
wren_cmd();
SCK = 0;
CS = 0;
OUTByte(0x01); //发送01H写寄存器命令字
//WIPCHK();
OUTByte(WDG); //发送寄存器值BL0,BL1为0没写保护,WD0=0 WD1=1看门狗复?奔湮?00ms//600
SCK=0;
CS=1;
WIPCHK(); //判断是否写入
}
void OUTByte(uchar WDG) //写一个字节
{
uchar TempCyc;
for(TempCyc=0;TempCyc<8;TempCyc++)
{
SCK = 0;
SI = WDG & 0x80;
WDG = WDG<<1; //右移
SCK = 1;
}
SI=0; //使SI处于确定的状态
}
//********************************************************************************************
uchar INPUTByte(void) //读一个字节
{
uchar 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;
}
void WIPCHK(void) //reentrant //检查WIP位,判断是否写入完成
{
uchar Temp,TempCyc;
for(TempCyc=0;TempCyc<50;TempCyc++)
{
Temp = RSDR(); //读状态寄存器
if (Temp&0x01==0)
TempCyc = 50;
}
}
void wren_cmd(void)
{
SCK = 0;
CS = 0;
OUTByte(0x06);
SCK = 0;
CS = 1;
}
void delay(void)
{
unsigned char i;
unsigned int j=0;
for(i=0;i<=200;i++)
{
for(j=0;j<1000;j=j+1)
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -