watchdog.c
来自「用于控制z1510芯片工作的程序代码」· C语言 代码 · 共 78 行
C
78 行
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "watchdog.h"
void EnableWDT(void)
{
unsigned int WchCon;
WchCon=(
(inport(CTL_OFF+OFFS_WCHDOGCON)|WCHDOG_EN)
&(~WCHDOG_WRST)
&(~WCHDOG_NMIFLAG)
&(~WCHDOG_RSTFLAG)
);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD1);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD2);
outport(CTL_OFF+OFFS_WCHDOGCON, WchCon);
}
void DisableWDT(void)
{
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD1);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD2);
outport(CTL_OFF+OFFS_WCHDOGCON, 0x0000);
}
void FeedWDT(void )
{
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_RSTCMD1);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_RSTCMD2);
}
void SetWDT(char Idan)
{
unsigned int watcon=1;
unsigned char far*pFarUchar;
pFarUchar = (unsigned char far *)MK_FP(0,LONG_TIME_WDOG_COUNT_ADR);
*pFarUchar=0;
if(Idan>7)
Idan=7;
watcon<<=Idan;
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD1);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD2);
outport(CTL_OFF+OFFS_WCHDOGCON, watcon);
return;
}
static unsigned char nCountStory=0;
void SetLongTimeWDT(unsigned char nCount)
{
unsigned char far*pFarUchar;
SetWDT(7);
nCountStory=nCount;
pFarUchar = (unsigned char far *)MK_FP(0,LONG_TIME_WDOG_COUNT_ADR);
*pFarUchar=nCount;
}
void FeedLongWDT(void )
{
unsigned char far*pFarUchar;
pFarUchar = (unsigned char far *)MK_FP(0,LONG_TIME_WDOG_COUNT_ADR);
*pFarUchar=nCountStory;
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_RSTCMD1);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_RSTCMD2);
}
void ColdResetSystem(void)
{
unsigned char far*pFarUchar;
pFarUchar = (unsigned char far *)MK_FP(0,LONG_TIME_WDOG_COUNT_ADR);
*pFarUchar=0;
disable();
outport(BIOS_PAGE_REG,0xff);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD1);
outport(CTL_OFF+OFFS_WCHDOGCON, WCHDOG_CMD2);
outport(CTL_OFF+OFFS_WCHDOGCON, 0xC001);
while(1);
enable();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?