文章分类

当前位置:首页>技术文章>PIC单片机16F84的内部硬件资源(七)

PIC单片机16F84的内部硬件资源(七)

10 复位复位是单片机的初始化操作。其主要功能是把程序计数器 PCL 初始化为 000H,可使 16F84 单片机从 000H 单元开始执行程序。 PIC16F84 芯片有下列几种不同的复位方式。(1)芯片上电复位 POR。

(2)正常工作状态下通过外部 MCLR 引脚加低电平复位。

(3)在省电休眠状态下通过外部 MCLR 引脚加低电平复位。

(4)监视定时器 WDT 超时溢出复位。 PIC16F84 片内集成有“上电复位”POR 电路,对于一般应用,只要把 MCLR 引脚接高电位即可。 在正常工作或休眠状态下用 MCLR 复位,只需在 MCLR 引脚上加一按键瞬间接地即可。 单片机 16F84 复位操作,对其它一些寄存器会有影响,如表 1 所示。

11. 监视定时器 WDT 单片机系统常用于工业控制,在操作现场通常会有各种干扰,可能会使执行程序弹飞到一种死循环,从而导致整个单片机控制系统瘫痪。如果操作者在场,就可进行人工复位,摆脱死循环。但操作者不能一直监视着系统,即使监视着系统,也往往是引起不良后果之后才进行人工复位。由于 PIC16F84 中具有程序运行自动监视系统,即监视定时器 WDT(Watch Dog Time),直译为“看门狗”定时器。这好比是主人养了一条狗,主人在正常干活时总不忘每隔一段时间就给狗喂食,狗就保持安静,不影响主人干活。如果主人打嗑睡,不干活了,到一定时间,狗饿了,发现主人还没有给它吃东西,就会大叫起来,把主人唤醒。由此可见,WDT 有如下特性:(1)本身能独立工作,基本上不依赖 CPU。

(2)CPU 在一个固定的时间间隔中和 WDT 打一次交通(如使其清零,即喂一次狗),以表明系统目前工作正常。

(3)当 CPU 落入死循环后,能被 WDT 及时发觉(如 WDT 计数溢出),并使系统复位。 PIC16F84 内的 WDT,其定时计数的脉冲序列由片内独立的 RC 振荡器产生,所以它不需要外接任何器件就可以工作。而且这个片内 RC 振荡器与 OSC1/CLKIN(引脚{16})上的振荡电路无关,即使 OSC1 和 OSC2 上的时钟不工作,WDT 照样可以监视定时。例如:当 PIC16F84 在执行 SLEEP 指令后,芯片进入休眠状态,CPU 不工作,主振荡器也停止工作,但是,WDT 照样可监视定时。

当 WDT 超时溢出后,可激活(唤醒)芯片继续正常的操作。而在正常操作期间,WDT 超时溢出将产生一个复位信号。如果不需要这种监视定时功能,在固化编程时,可关闭这个功能。附图是监视定时器的结构框图。表 2 是与 WDT 有关的寄存器。 WDT 的定时周期在不加分频器的情况下,其基本定时时间是 18ms,这个定时时间还受温度、VDD 和不同元器件的工艺参数等的影响。如果需要更长的定时周期,还可以通过软件控制 OPT/ON 寄存器把预分频器配置给 WDT,这个预分频器的最大分频比可达到 1∶128。

这样就可把定时周期扩大 128 倍,即达到 2?3 秒。 如果把预分频器配置给 WDT,用 CLRWDT 和 SLEEP 指令可以同时对 WDT 和预分频器清零,从而防止计时溢出引起芯片复位。所以在正常情况下,必须在每次计时溢出之前执行一条 CLRWDT 指令(即喂一次“狗”),以避免引起芯片复位。当系统受到严重干扰处于失控状态时,就不可能在每次计时溢出之前执行一条 CLR WDT 指令,WDT 就产生计时溢出,从而引起芯片复位,从失控状态又重新进入正常运行状态。

当 WDT 计时溢出时,还会同时清除状态寄存器中的 D4 位 T0,检测 T0 位即可知道复位是否由于 WDT 计时溢出引起的。


© 星光电子技术工作室 2021 All Rights Reserved.
如有任何问题、建议、业务、合作,请联系手机/微信:13713820066