📄 watchdog_conf.c
字号:
#include "reg24le1.h"
#include "watch_dog.h"
#include "intrins.h"
void io_config()
{
CLKCTRL=0X28;
CLKLFCTRL = 0x01;
P0CON=0X00;//NORMAL
P0DIR=0X00;//OUT
LED=0;
}
void uart_init()
{
// UART
P0DIR &= 0xF7; // P03 (TxD) is output
P0DIR |= 0x10; // P04 (RxD) is input
P0|=0x18;
S0CON = 0x50;
PCON |= 0x80; // SMOD = 1
WDCON |= 0x80; // Select internal baud rate generator
S0RELL = 0xF3; // BAUD_38K4
S0RELH = 0x03;
//ES0 = 1;
}
void watchdog_init()
{
WDSV=(640%256);
delay(10);
WDSV=(640/256);
puts("\n the le1 will restart in 5 seconds! \n");
}
void delay(unsigned int x)
{
unsigned char di;
for(;x>0;x--)
for(di=175;di>0;di--)
{
;
}
}
void redrst()
{
unsigned char rst;
rst=RSTREAS;
rst&=0x07;
send('\n');
switch(rst)
{
case 0x00:puts("On-chip reset generator!");break;//片上晶振产生复位
case 0x01:puts("RST pin!");break;//引脚复位
case 0x02:puts("Watchdog!");break;//狗复位
case 0x04:puts("Reset from on-chip hardware debugger!");break;//硬件调试软件复位
case 0x06:puts("first reset by debuger,then by watchdog!");break;
default :puts("error!");break;
}
RSTREAS=0x00;
}
void send(char ch)
{
S0BUF=ch;
while(!TI0);
TI0=0;
}
void puts(unsigned char* s)
{
while(*s!='\0')
send(*s++);
}
void decount()
{
unsigned int wh,wl;
unsigned int time0=5,time1=0;
wl=WDSV;
delay(10);
wh=WDSV;
wl&=0xff;
wh&=0xff;
time1=(wh*256+wl)*256/32768;
/*
if(time1!=time0)
{
LED=!LED;
time0=time1;
send(time0+'0');
send('\n');
}
*/
delay(10000);
LED=!LED;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -