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