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

📄 dogfun.c

📁 非常实用的看门狗驱动程序
💻 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 + -