2.2 硬件实现电路图
图2—2给出了MAX813L在单片机系统中的典型应用线路图。此电路可以实现上电、瞬时掉电以及程序运行出现“死机”时的自动复位和随时的手动复位;并且可以实时地监视电源故障,以便及时地保存数据。
本电路巧妙地利用了MAX813L的手动复位输入端。只要程序一旦跑飞引起程序“死机”,端电平由高到低,当变低超过140 ms,将引起MAX813L产生一个200 ms的复位脉冲。同时使看门狗定时器清0和使引脚变成高电平。也可以随时使用手动复位按钮使MAX813L产生复位脉冲,由于为产生复位脉冲端要求低电平至少保持140ms以上,故可以有效地消除开关抖动。
该电路可以实时地监视电源故障(掉电、电压降低等)。图2—2中R1的一端接未经稳压的直流电源。电源正常时,确保R2上的电压高于1.26 V,即保证MAX813L的PFI输入端电平高于1.26 V。当电源发生故障,PFI输入端的电平低于1.25 V时,电源故障输出端电平由高变低,引起单片机中断,CPU响应中断,执行相应的中断服务程序,保护数据,断开外部用电电路等。
3 抗干扰程序设计
3.1 程序运行“死机”及相应对策
程序正常运行时,由主程序在小于1.6 s的时间间隔内周期性地从P1.7端向MAX813L的WDI输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。实现指令为:
RST-PRG:SETB P1.7
NOP
CLR P1.7
若超过1.6 s该输入端收不到脉冲信号,则内部看门狗定时器溢出,8号引脚由高电平变为低电平。引起MAX813L产生一个200 ms的复位脉冲。同时使看门狗定时器清0和使引脚变成高电平。
需要引起注意的是,整个单片机系统完成复位后,在PC指针的指引下整个程序将从0000H地址处重新开始初始化运行,而这在很多情况下是不允许的(如连续的工艺流程),为此必须采取相应的措施。首先在对单片机系统完成复位后,程序应该先判断是开机运行(冷启动)还是运行过程中“死机”之后的重新加载运行(热启动)。因为一般情况下在这两种启动方式下,系统程序在进入主流程前所要做的工作往往不同。如冷启动后,系统程序在初始化程序中往往要进行系统资源的自检以及将各外围设备设置为相应的待机状态等。而热启动后往往不再对系统的资源自检,同时应尽量避免对各外围设备修改设置,只是对单片机系统本身的一些资源进行必要的设置工作。其次,在大多数情况下,我们总可以把一个连续的过程分解开来,把它变成一个个独立的子过程(状态)组成的连续过程。在主程序运行过程中,适时保存相应状态和该状态下的相关参数。这样当程序运行出现“死机”,在MAX813L作用下系统复位和初始化后,将首先查询事先保存的状态参数,然后根据此参数决定程序的流向。同时把该状态下事先保存的参数取出,对系统外围设备进行必要的恢复设置工作和引导程序继续运行。根据这一思想设计的系统程序流程图如图3—1所示。
3.2 电源故障及相应对策
当电源发生故障时,引起单片机中断,CPU响应中断,执行相应的中断服务程序,保护数据,断开外部用电电路等。为了做到这一点,必须把中断优先级(PX0)设为最高,特别是系统中还有其它中断时,更应如此。中断优先级的设置可通过中断优先寄存器IP实现,此外还要设置中断允许寄存器IE的总允许位(EA)及外部中断0中断允许位(EX0)。实现指令为:
SETB IP.0 ;设置PX0=1
SETB IE.7 ;设置EA=1
SETB IE.0 ;设置EX0=1
至于中断源的触发方式。如果选择电平触发,则中断擦除时必须外加辅助电路,否则中断不能正常执行;如果选择跳变触发,当端出现负跳变时,CPU内部硬件自动置位中断标志IE0,CPU响应中断,通过向量地址转入中断服务程序时IE0被硬件清0。所以基于上述分析,必须选用跳变触发方式。触发方式由定时器控制寄存器TCON中的IT0位决定。实现指令为:
SETB TCON.0
设计好中断服务程序对于系统的连续可靠运行具有重要意义。在中断服务程序中,先保存重要数据到片内RAM(掉电时由备用电源供电,相应实现电路未画出)。发出控制信号断开外围设备,最后把电源控制寄存器PCON的PD位置1,激活掉电工作方式,中断返回。中断服务程序实现如下(其中R0代表保存的数据在内存中的缓冲区首址,DPTR代表要保存的数据在外部RAM中的缓冲区首址,R1代表要保存的数据字节量):
INT0:MOVX A,@DPTR ;保存数据
MOV @R0,A
INC R0 ;内存缓冲区指针加1
INC DPTR ;外存缓冲区指针加1
DJNZ R1,INT0 ;保存完?没完,继续保存
SETB PCON.1 ;激活掉电方式
RET1
4 结束语
本系统巧妙地利用MAX813L芯片,实现了单片机系统的看门狗电路、电源故障监视电路和手动、自动复位电路,电路结构紧凑,设计合理。结合本文给出的程序抗干扰设计方案,可有效地解决程序运行中出现的“死机”现象和电源故障带来的不利影响。在我们设计氮化镓半导体薄膜生长工艺流程实时监控系统中实际运行表明:该方案设计合理,运行可靠,抗干扰能力强,达到了满意的使用效果,并且可推广应用到其它的单片机控制系统中去。