<br />各位前辈,帮我看看LPC952的看门狗怎么不运行啊?各位前辈好!<br /><br />我的LPC952的看门狗怎么都不运行啊!设置也很简单啊,怎么就不运行呢?有相关经验的朋友能给点建议吗?谢谢!<br /><br />这个程序应该因为看门狗复位,灯熄灭后应该要再次点亮!<br /><br />灯亮---熄灭---亮(因为看门狗溢出复位),但是灯熄灭后不亮了啊!<br /><br />/**************************************************************************<br />* Copyright(C)2007<br />* All rights reserved.<br />* <br />* 文 件 名:<br />* <br />* 文件描述:<br />* <br /><br />* 创 建 人:<br />* 当前版本: 1.0<br />* 完成日期:<br />* 修改记录:<br />*<br />* 说 明:全局变量(Global Variable)后缀:_G<br />***************************************************************************/<br /><br />#include < reg952.h ><br /><br />/*宏定义*/<br />#define uchar unsigned char<br />#define uint unsigned int<br />#define uintl unsigned long<br /><br /><br />#define BRGR1_DATA 0x04 /*9600 baud @ 11.0592MHz*/<br />#define BRGR0_DATA 0x70<br /><br />#define ADIN_Channel 0x60 /*T:AD05 V:AD06*/<br /><br />sbit pow_en = P1^7; /*电源控制*/<br /><br />/*=========================================================================<br />* 函 数 名:clrwdt()<br />* 功能描述:<br />* 喂狗子程序<br />* 入口参数:<br />* 无 <br />* 出口参数:<br />* 无<br />* 函数说明:<br />* 无<br />=========================================================================*/<br />//void clrwdt ()<br />//{<br />// EA=0; /*关中断*/<br />// WFEED1=0xA5; /*执行清零第一部分*/<br />// WFEED2=0x5A; /*执行清零第二部分*/<br />// EA=1; /*开中断*/<br />//}<br /><br />/*=========================================================================<br />* 名 称:init_wdt()<br />* 功能描述:<br />* 看门狗初始化程序 <br />* 入口参数:<br />* 无<br />* 出口参数: <br />* 无<br />* 函数说明:<br />* CPU配置(UCFG1)WDTE=1,WDSE=0<br />* WDCON上电复位值为111??1?1B (默认选择看门狗振荡器) <br />=========================================================================*/<br />void init_wdt ()<br />{ <br />WDL=0xFF; /*设置8位倒计数器初值,复位值为FF*/<br /><br />EA=0;<br />WDCON=0xC5; /*启动WDT 1.31S*/<br />WFEED1=0XA5; /*清零第一部分*/<br />WFEED2=0X5A; /*清零第二部分*/<br />EA=1;<br />}<br /><br />/*=========================================================================<br />* 名 称:Delayms()<br />* 功能描述:<br />* N*0.5ms级延时<br />* 入口参数:<br />* N 延时参数<br />* 出口参数:<br />* 无<br />*<br />* 函数说明:N值越大,延时越久<br />=========================================================================*/<br />void Delayms ( uint N )<br />{<br />uint j;<br />while ( N>0 )<br />{<br />for ( j=0; j<=200; j++) ;<br />N-- ;<br />}<br />}<br /><br />/*=========================================================================<br />* 名 称:Init_CPU()<br />* 功能描述:<br />* 初始化CPU各部件<br />* 入口参数:<br />* 无<br />* 出口参数:<br />* 无<br />* <br />* 函数说明: <br />=========================================================================*/<br />void Init_CPU ( )<br />{<br />/*I/O口初始化*/<br />P0M1=0x87; <br />P0M2=0x00;<br /><br />P1M1=0x3c;<br />P1M2=0x00;<br /><br />P2M1=0x02;<br />P2M2=0x00;<br /><br />P4M1=0xf3;<br />P4M2=0x00;<br /><br />P5M1=0x00;<br />P5M2=0x00;<br /><br />/*A/D转换模式*/<br />AD0INS=ADIN_Channel; /*使能待选通道*/<br />AD0MODA|=0x20; /*双通道、连续转换模式*/<br />AD0MODB =0x00; /*ADC时钟为1分频CCLK 8次产生中断*/<br /><br />/*UART0 初始化*/<br />//PCON &= 0x3f; /**/<br />S0CON = 0xf0; /*MODE 3、使能接受、使能多机通讯*/<br /><br />BRGCON_0 = 0x00; /*载入波特率常数*/<br />BRGR1_0 = BRGR1_DATA; /*9600 baud @ 11.0592MHz*/<br />BRGR0_0 = BRGR0_DATA; <br />BRGCON_0 = 0x03; /*选择独立的波特率发生器、并使能*/<br /><br />S0STAT = 0x20; /*使用独立的Rx和Tx中断*/<br /><br />/*UART1 初始化*/<br />S1CON = 0x50; /*MODE 1 使能接收*/<br /><br />BRGCON_1 = 0x00; /*载入波特率常数*/<br />BRG1_1 = BRGR1_DATA; /*9600 baud @ 11.0592MHz*/<br />BRG0_1 = BRGR0_DATA; <br />BRGCON_1 = 0x03; /*选择独立的波特率发生器、并使能*/<br /><br />S1STAT = 0x20; /*使用独立的Rx和Tx中断*/<br /><br />IEN2=0x04; /*使能UART1接收中断*/<br /><br />/*T0 T1 初始化*/<br />TMOD=0x15; /*定时器0:计数 定时器1:定时; 模式1:16位; TRn控制*/<br />TCON=0X01; /*外中断0下降沿触发 外中断1低电平触发*/<br /><br />EA=1;<br />}<br /><br />/*=========================================================================<br />* 名 称:main()<br />* 功能描述:<br />* <br />* 入口参数:<br />* 无<br />* 出口参数:<br />* 无<br />*<br />* 函数说明:无<br />===========================================================================*/<br />void main ( )<br />{<br />Delayms( 10 );<br /><br />Init_CPU();<br /><br />init_wdt(); <br /><br />pow_en=0; /*测量部分电源使能*/<br />Delayms ( 1000 );<br /><br />while( 1 )<br />{<br />// clrwdt();<br />Delayms ( 500 );<br />pow_en=1;<br />Delayms ( 500 ); <br />}<br />}<br /> |
|