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 + -
显示快捷键?