这个程序的目的在于测试看门狗是否正常工作。PIC24的看门狗支持新的工作模式:窗口模式。清除看门狗的时间(喂狗)必须看门狗的后1/4周期进行,否则会使系统复位。
看门狗使用内部的LPRC(低功耗RC振荡器)作为时钟源,频率约31KHz,有两个可以设置的分配器。看门狗的超时时间在配置字中设置。
FWDTEN 配置位置 1 时,WDT始终是使能的。但是,FWDTEN配置位编程为 0 时,WDT 可选
择由用户软件控制。这里设置FWDTEN为0。
//PIC24FJ64GA002的第11个程序
//看门狗测试,按下KEY后,进入死循环,看门狗超时使系统复位
//注意设置配置字,看门狗禁止,窗口模式禁止
// 后分频器 1:1024 预分频系数32
//邵子扬 2008.8.22
#include <p24Fxxxx.h>
#define LED LATBbits.LATB15
#define KEY PORTBbits.RB5
int main(void)
{
unsigned int i, j;
TRISB = 0x0FFF; //设置LED为输出RB15-RB12
LATB = 0xFFFF;
for(j = 20; j > 0; j--)
{
for(i = 30000; i > 0; i--)
Nop();
LED = !LED; //LED闪烁,提示程序开始
}
T2CON = 0;
TMR2 = 0;
PR2 = 7200 - 1; //7.3728M时钟下,产生0.5s定时器
T2CON = (1 << 15)|(1 << 5)|(1 << 4); //启动时钟,256分频
_SWDTEN = 1; //使能看门狗
while(1)
{
if(IFS0bits.T2IF)//每秒钟改变一次LED状态
{
IFS0bits.T2IF = 0;
LED = !LED;
}
if(!KEY) //按键后进入死循环
while(1);
ClrWdt();
}
return 0;
}
文章评论(0条评论)
登录后参与讨论