能让芯片睡死的一段程序??!!

18780176718   2013-7-20 23:27 楼主
前几天刚接触430吧,属于菜鸟,然后就想把各个模块过一遍,心里有个大概,然后写了一段程序:如下

#include

void main(void)
{
   WDTCTL=WDTPW+WDTHOLD+WDTNMI+WDTNMIES;
   //RST/NMI引脚为非屏蔽中断输入, 时钟禁止输入,计数停止
   P1DIR|=BIT0;
   P1OUT&=~BIT0;
   IE1|=NMIIE;  //非屏蔽中断允许位
   _BIS_SR(LPM0_bits);
}
#pragma vector=NMI_VECTOR
__interrupt void nmi_(void)
{
  volatile unsigned int i;
  P1OUT|=BIT0;
  for(i=20000;i>0;i--);
  P1OUT&=~BIT0;
  IFG1&=~NMIIFG;//清除中断标志
  IE1|=NMIIE;

}

然后这段程序直接写进去直接把芯片睡死了。

当然这个睡死的概念是我自己想出来的,反正写入这个芯片后,单片机是无法工作了,主要是BSL无法写入程序,按照我的理解,这段程序写入后,没有办法复位?!
(其实只是猜测)因为不是非常了解,然后无法达到BSL烧写程序的基本要求了,导致无法写入程序,实现声明,之前所有可能导致BSL初始化失败的原因都试过了(从网上
和其他途径得到的所有的可能了,当然欢迎大家补充,我是菜鸟),连芯片也换了,写入后出现同样的问题,最后通过仿真器的JTAG端口擦除程序才恢复正常。有没有人
详细解释一下其中的关键问题所在,应该是从程序入手吧。多谢了,欢迎大家讨论讨论吧,希望向大家学习学习。谢谢。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复