·上一文章:ASK牌10.75GHz本振高频头亚太2R上的12278及12308两组节目难以正常收视
·下一文章:单片机“启动”不了
笔者在设计制作的软连接绕箔条厚度检控仪时曾碰到过这个问题:一有串口通信发送数据时,单片机就死机了。该检控仪的电路结构如图3所示,按理说电路中外接有专用的看门狗电路X5045,单片机一死机就会被看门狗复位重新启动的,单片机怎么一死机就“死”了呢?
用仿真运行很快就找到了引起单片机P89C54X2死机的原因——由于在串行口中断服务程序里有一条ANLSCON,#OFCH指令,也就是有个“清零”串行口发送中断请求标志TI的操作指令,致使发送程序中JNB TI,S判断程序跳不出去而造成“死锁”。
原来,起初在用仿真器调试程序时对某些程序段作了“单步运行”的调试。顾名思义,“单步运行”就是一步一步地进行运行,自然,每步之间的运行都会有长短不一的时间间隔,这样如果打开“看门狗”,其定时器势必溢出,导致单片机常被复位初始化,为此在执行“单步运行”操作时就得关闭“看门狗”的作用,后来一直忘记了重新启用“看门狗”,以至出现上述问题。只要再改写X5045的状态寄存器的相关状态字就可激活启用看门狗了。