MCS-51单片机的工作方式

四、MCS-51单片机的工作方式

下面简单介绍MCS-51单片机的复位方式和低功耗工作方式。

(一)复位方式

1.复位操作的主要功能

复位是单片机的初始化操作,其主要功能是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。例如复位后PC=0000 H,使单片机从第一个单元取指令开始执行程序。无论是在单片机刚开始接上电源时,还是由于断电、程序运行出错、操作错误等原因使系统发生故障后处于死锁状态时,为摆脱困境按复位键重新启动后,都进入相同的初始化过程。

除PC之外,复位操作还对其他一些寄存器有影响,见表2-1。

表2-1 各特殊功能寄存器的复位值

注 ×为随机状态。

在SFR中,除了端口锁存器的复位值为FFH,堆栈指针SP的值为07 H,串行口的SBUF内为不定值外,其余的寄存器全部清零。片内RAM的状态不受复位的影响,在系统上电时,RAM的内容是不定的。

表2-1中的符号意义如下:

(1)A=00H:表明累加器已被清零。

(2)PSW=00 H:表明选寄存器0组为工作寄存器组。

(3)SP=07H:表明堆栈指针指向片内RAM的07 H字节单元,根据堆栈操作的“先加后压”法则,第一个被压入的数据写入08 H单元中。

(4)P0~P3=FFH:表明已向各端口线写入“1”,此时,各端口既可用于输入,又可用于输出。

(5)IP=×××00000B:表明各个中断源处于低优先级。

(6)IE=0××00000B:表明各个中断均被关断。

(7)TMOD=00H:表明T0、T1均为工作方式0,且运行于定时器状态。

(8)TCON=00 H:表明T0、T1均被关断。

(9)SCON=00H:表明串行口处于工作方式0,允许发送,不允许接收。

(10)PCON=00 H:表明SMOD=0,波特率不加倍。

需要指出的是,记住一些特殊功能寄存器复位后的主要状态,对熟悉单片机操作、缩短应用程序中的初始化部分是十分必要的。

2.复位信号及其产生

RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即两个机器周期)以上。若使用频率为6MHz的晶振,则复位信号持续时间应超过4μs才能完成复位操作。

产生复位信号的电路逻辑如图2-8所示。

图2-8 复位电路逻辑图

整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。

3.复位电路

复位是单片机的一个很重要的操作方式。但是,MCS-51单片机本身是不能自动进行复位的,必须配合相应的外部电路才能产生复位信号,实现复位操作。复位操作有上电自动复位和按键手动复位两种方式。

(1)上电自动复位。上电自动复位是通过外部复位电路在加电瞬间对电容的充电来实现的,其电路如图2-9(a)所示。在上电瞬间,电容C通过电阻R充电,RST引脚端出现正脉冲,只要RST引脚端保持10ms以上高电平,就可使单片机有效的复位。关于参数的选定,在振荡稳定后应保证复位高电平持续时间(即正脉冲宽度)大于两个机器周期。当采用的晶体频率为6MHz时,可取C=22μF,R=1kΩ;当采用的晶体频率为12MHz时,可取C=10μF,R=8.2kΩ。

如果上述电路复位不仅要使单片机复位,而且还要使单片机的一些外围芯片也同时复位,那么上述电阻、电容参考值应作少许调整。

对于CMOS型的89C51,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1μF。

(2)手动复位。所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态。系统上电运行后,若需要复位,一般是通过手动复位来实现的。按键手动复位又分为按键电平复位和按键脉冲复位。按键电平复位相当于按复位键后,复位端通过电阻与VCC电源接通;按键脉冲复位是利用RC微分电路产生正脉冲。基本手动复位电路如图2-9(b)、(c)所示,参数选取应保证复位高电平持续时间大于两个机器周期(图中参数适合12MHz、6MHz晶振)。

图2-9 各种复位电路

(二)低功耗方式

51系列单片机采用两种半导体工艺生产。一种是HMOS工艺,即高密度短沟道MOS工艺;另外一种是CHMOS工艺,即互补金属氧化物的MOS工艺。CHMOS是CMOS(即互补型金属氧化物半导体)和HMOS的结合,除保持了HMOS高速度和高密度的特点之外,还具有CMOS低功耗的特点。例如8051的功耗为630m W,而80C51的功耗只有120m W。在便携式、手提式或野外作业仪器设备上低功耗是非常有意义的。因此,在这些产品中必须使用CHMOS的单片机芯片。

89C51属于CHMOS的单片机,运行时耗电少,而且还提供两种节电工作方式,即空闲(等待、待机)方式和掉电(停机)工作方式,以进一步降低功耗。

如图2-10所示为实现这两种方式的内部电路。由图2-10可见,若IDL=0,则89C51将进入空闲运行方式。在这种方式下,振荡器仍继续运行,但封锁了去CPU的“与”门,故CPU此时得不到时钟信号。而中断、串行口和定时器等环节却仍在时钟控制下正常运行。掉电方式下),振荡器被冻结。

图2-10 空闲和掉电方式控制电路

下面分别讨论这两种运行方式。

1.方式的设定

空闲(Idle)方式和掉电方式都是由特殊功能寄存器PCON(电源控制寄存器)的有关位置来控制的,通过对SFR中的PCON(字节地址为87H)相应位置“1”而启动相应节电工作方式。

如图2-11所示为89C51电源控制寄存器PCON各位的分布情况。HMOS型器件的PCON只包括一个SMOD位,其他四位是CHMOS型器件独有的。用户不能使用其中的三个保留位,因为硬件没有做出安排,在以后的MCS-51新产品中可能会代表某特定的功能。图2-11中各符号的名称和功能如下。

(1)SMOD:波特率倍频位。若此位为“1”,则串行口方式1、方式2和方式3的波特率加倍。

图2-11 电源控制寄存器PCON

(2)GF1和GF0:通用标志位。

(3)PD:掉电方式位。此位写“1”即启动掉电方式。由图2-10可见,此时时钟被冻结。

(4)IDL:空闲方式位。此位写“1”即启动空闲方式。这时CPU因无时钟控制而停止运行。如果同时向PD和IDL两位写“1”,则PD优先。

2.空闲(等待、待机)工作方式

如果用指令使CPU执行指令后使PCON寄存器IDL位置“1”(PCON.0=1),则系统进入空闲工作方式。这时,振荡器仍然运行,并向中断逻辑、串行口和定时/计数器电路提供时钟,但向CPU提供时钟的电路被阻断,因此CPU不能工作,与CPU有关的如堆栈指针SP、程序计数器PC、程序状态字PSW、累加器ACC以及全部通用寄存器也都被保持在原状态,端口状态也保持不变。ALE和保持逻辑高电平。

进入空闲方式后,有两种方法可以使系统退出空闲方式。一种是采用中断的方法。在空闲方式下,响应任何中断请求都可以由硬件将PCON.0(IDL)清零而中止空闲工作方式。当执行完中断服务程序返回到主程序时,在主程序中,下一条要执行的指令就是使IDL置位指令后面的那条指令。PCON中的通用标志位GF1和GF0可以用来指明中断是在正常操作期间,还是在空闲方式期间发生的。进入空闲方式时,除用指令使IDL=1外,还可先用指令使GF1和GF0置1。当由于中断而退出空闲方式时,在中断服务程序中可以通过检查这些标志位,表明是从空闲方式进入中断的。

另一种退出空闲方式的方法是硬件复位。由于在空闲工作方式下振荡器仍然工作,因此硬件复位仅需两个机器周期便可完成。而RST端的复位信号直接将PCON.0(IDL)清零,从而退出空闲状态,单片机进入复位状态。

3.掉电(停机)工作方式

当CPU执行一条置PCON.1位(PD)为“1”的指令后,系统进入掉电工作方式。在这种工作方式下,内部振荡器停止工作。由于没有振荡时钟,因此,所有的功能部件都停止工作。但片内RAM区和特殊功能寄存器的内容被保留,而端口的输出状态值都保存在对应的SFR中,ALE和都为低电平。

退出掉电方式的唯一方法是由硬件复位,复位后将所有特殊功能寄存器的内容初始化,但不改变片内RAM区的数据。

在掉电工作方式下,VCC可以降到2V,但在进入掉电方式之前,VCC不能降低。而在准备退出掉电方式之前,VCC必须恢复正常的工作电压值,并维持一段时间(约10ms),使振荡器重新启动并稳定后方可退出掉电方式。