用proteus对msp430的看门狗进行仿真,当采用内部DCO产生的SMCLK,即程序中采用WDT_MDLY_32时,在PROTEUS中能正常工作;
但是使用外部ACLK作为时钟时,(WDT_ADLY_1000)程序不正常,PROTEUS没有报错。很疑惑,为什么外加低频晶振PROTEUS就不好使?
程序很简单:
#include "msp430x24x.h"
void main(void)
{
//程序中开头还加入了打开低频振荡器的代码如下:
do
{
int i;
IFG1 &= ~OFIFG; //晶体振荡器标志有效
for(i = 0xFF;i>0;i--); //延时
}
while ((IFG1&OFIFG)); //判断振荡器正常
BCSCTL2 |= SELM_3; //采用低频振荡器32768Hz
BCSCTL1 |=DIVA_2;
WDTCTL = WDT_ADLY_1000; //现在不正常,但当WDT_MDLY_32 时程序正常!!!!!
IE1 |= WD
tiE;
P1DIR |= 0x10;
__bis_SR_register(LPM0_bits + GIE);
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
P1OUT ^= 0x10;
}
-
proteus电路连接
一周热门 更多>