51单片机系统抗干扰应用实例
3抗干扰程序设计 SETB IP.0 ;设置PX0=1 4 结束语
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 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
本系统巧妙地利用MAX813L芯片,实现了单片机系统的看门狗电路、电源故障监视电路和手动、自动复位电路,电路结构紧凑,设计合理。结合本文给出的程序抗干扰设计方案,可有效地解决程序运行中出现的“死机”现象和电源故障带来的不利影响。在我们设计氮化镓半导体薄膜生长工艺流程实时监控系统中实际运行表明:该方案设计合理,运行可靠,抗干扰能力强,达到了满意的使用效果,并且可推广应用到其它的单片机控制系统中去。
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)