请DX过来帮忙,是关于W77E58的看门狗的问题!!!
我的看门狗程序在keil C51 7。0 的软件仿真是可以使系统重新启动,但烧写到MCU上就不能重启了。我的设置如下:
sfr WDCON=0XD8;
sbit SMOD_1 = WDCON^7;
sbit POR = WDCON^6;
sbit WDIF = WDCON^3;
sbit WTRF = WDCON^2;
sbit EWT = WDCON^1;
sbit RWT = WDCON^0;
#define WDTC_ENABLE TA=0xAA;TA=0x55;EWT=1;
#define WDTC_DISABLE TA=0xAA;TA=0x55;EWT=0;
#define WDTC_CLEAR TA=0xAA;TA=0x55;RWT=1;
#define WDIF_CLEAR TA=0xAA;TA=0x55;WDIF=0;
#define WDTC_INI_ENABLE ewdi=1;
#define WDTC_INI_DISABLE ewdi=0;
#define WDTC_MODEL0 ckcon=ckcon&0x3F;ckcon=ckcon|0x00; ///2^17+512
#define WDTC_MODEL1 ckcon=ckcon&0x3F;ckcon=ckcon|0x20; ///2^20+512
#define WDTC_MODEL2 ckcon=ckcon&0x3F;ckcon=ckcon|0x40; ///2^23+512
#define WDTC_MODEL3 ckcon=ckcon&0x3F;ckcon=ckcon|0xC0; ///2^26+512
void DelaymS(unsigned int Count)
{
unsigned int i=0;
unsigned char j,l;
//CLEAR_DOG;
while(i!=Count)
{
//CLEAR_DOG;
for(j=0;j <228;j++){l++;}
i++;
}
}
/*
void WatchDogIni() interrupt 12
{
//printf("WatchDog Interrut!");
WDIF=0;
}
*/
void main()
{
// #ifndef MONITOR51
// SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
// tmod |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
// th1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */
// tr1 = 1; /* TR1: timer 1 run */
// ti = 1; /* TI: set TI to send first char of UART */
// #endif
DelaymS(2000);
BuzzerControl = 1;
IO_CONTROL_PORT = IoControl; //这是一个蜂鸣器控制
DelaymS(5000);
//printf("system boot!\n");
BuzzerControl = 0;
IO_CONTROL_PORT = IoControl;
DelaymS(2000);
WDTC_MODEL3;
//WDTC_CLEAR;
//WDTC_INI_ENABLE;
WDTC_ENABLE;
//Reset();
while(1)
{
BuzzerControl = 1;
IO_CONTROL_PORT = IoControl;
DelaymS(200);
BuzzerControl = 0;
IO_CONTROL_PORT = IoControl;
DelaymS(1200);
}
}
我的硬件中,用到了BANK的技术,所有的程序都放在外部的W29C040上,这有关吗?
发表时间:2004年10月8日10:34:39