2.4 51单片机工作方式
51单片机的工作方式包括复位方式、程序执行方式、节电方式和EPROM的编程和校验方式,在不同的情况下,其工作方式也不相同。
2.4.1 复位及复位方式
单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态(如PC的值为0000H),并从这个状态开始工作,单片机应用程序必须以此作为设计前提。
另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。
51单片机的复位电路包括上电复位电路和按键(外部)复位电路,如图2-9所示。
不管是何种复位电路,都是通过复位电路产生的复位信号(高电平有效)由RST/VPD引脚送入到内部的复位电路,对51单片机进行复位。复位信号要持续两个机器周期(24个时钟周期)以上,才能使51单片机可靠复位。
图2-9 复位电路
a)上电复位 b)按键脉冲复位 c)按键(手动)电平复位
(1)上电复位
所谓上电复位,是指单片机接通工作电源(VCC=5V)时,片内各功能部件的初始状态。
上电复位电路利用电容器充电来实现复位。在图2-9a中可以看出,上电瞬时RST/VPD端的电位与VCC等电位,RST/VPD为高电平,随着电容器充电电流的减少,RST/VPD的电位不断下降,其充电时间常数为10×10-6×8.2×103s=82×10-3s=82ms,此时间常数足以使RST/VPD在保持为高电平的时间内完成复位操作。
(2)按键复位
按键复位电路又包括按键脉冲复位和按键电平复位。图2-9b为按键脉冲复位电路,由外部提供一个复位脉冲,复位脉冲的宽度应大于两个机器周期。图2-9c为按键电平复位电路,按下复位按键,电容C被充电,RST/VPD端的电位逐渐升高为高电平,实现复位操作,按键释放后,电容器经内部下拉电阻放电,RST/VPD端恢复低电平。
(3)复位后内部寄存器状态
单片机复位后,其片内各寄存器状态见表2-5。单片机复位后部分寄存器初始状态如下。
表2-5 复位后内部寄存器状态
1)P0~P3端口输出全为0FFH。
2)程序计数器PC=0000H,指向程序存储器0000H单元,使CPU从首地址重新开始执行程序。
3)堆栈寄存器SP=07H。
4)51单片机在电复位时,其内部RAM中的数据保持不变。
2.4.2 程序执行工作方式
程序执行方式是单片机的基本工作方式,通常可分为连续执行和单步执行两种工作方式。
1.连续执行方式
连续执行方式就是单片机正常执行控制程序的工作方式。
被执行程序存储在片内(或片外)的ROM中,由于单片机复位后程序计数器PC=0000H,因此机器在加电或按键复位后总是到0000H处开始连续执行程序,由于ROM区开始的一些存储单元的特殊作用,可以在0000H处放一条转移指令,以便跳转到指定的程序存储器中的任一单元去执行程序。
2.单步执行方式
用户在调试程序时,常常要一条一条地执行程序中的每一条指令。单步执行方式就是为用户调试程序而设计出的一种工作方式。可设置一单步执行按键,当需要单步执行程序时,可以按下该键,每按一次可以执行一条指令。
单步执行方式是利用单片机外部中断功能实现的。其原理为:单步执行键相当于外部中断的中断源,当它被按下时,相应电路就产生一个负脉冲送到单片机的外部中断输入端(或)引脚,51单片机便能自动执行预先设计好的具有单步执行指令的中断服务程序,从而实现单步执行的功能。
2.4.3 节电工作方式
节电工作方式是一种能减少单片机功耗的工作方式,通常有空闲方式和掉电方式两种,只有CHMOS型器件才有这种工作方式。CHMOS型单片机是一种低功耗器件,正常工作时耗电11~20mA电流,空闲状态为1.7~5mA电流,掉电方式为5~50μA。因此,CHMOS型单片机特别适用于低功耗场合。
CHMOS型单片机的节电工作方式是由特殊功能寄存器PCON控制的。PCON各位定义为
其中,SMOD为串行口波特率倍率控制位;GF0、GF1为通用标志位;PD为掉电控制位,PD=1进入掉电方式;IDL为空闲控制位,IDL=1进入空闲方式。
当PD与IDL同时为1时,先进入掉电控制方式。
1.掉电方式
单片机在运行过程中,如果发生掉电,片内RAM和SFR中的信息将会丢失。为防止信息丢失,可以把一组备用电源加到RST/VPD端,当VCC上的电压低于VPD上的电压时,备用电源通过VPD端,以低功耗保持内部RAM和SFR中的数据。
利用这种方法,可以设计一个掉电保护电路,当外部电路检测到即将发生掉电时,立即通过外部中断输入端通知CPU,CPU执行中断服务程序把有关数据保存到内部RAM中,然后执行如下指令将PD设置为1即可进入掉电工作方式。
MOV PCON,#02H
在掉电方式下,内部RAM的00H~7FH中的数据被保留下来,不会丢失。在掉电期间,电源VCC电压可以降到2V,内部RAM耗电电流为50µA。当电源电压恢复到5V后,硬件复位10ms可以使单片机退出掉电方式。
80C51复位后SFR重新初始化,但RAM中内容保持不变。因此,若要使得80C51在退出掉电方式后能继续执行原来的程序,就必须在掉电前预先把SFR中的内容保护到片内RAM,并在掉电方式退出后从RAM中把被保护的数据取出,送回到SFR,恢复SFR中原来的内容。
2.空闲方式
80C51执行如下指令可以将IDL设置为1从而进入空闲方式。
MOV PCON,#01H
进入空闲方式后,CPU停止工作,但中断、串行口和定时器/计数器可以继续工作。此时,CPU中的SP、PC、PSW、A及SFR中的其他寄存器和内部RAM中的内容均保持不变,时钟电路继续工作,ALE和变为高电平,无脉冲输出,处在无效状态。
在空闲工作方式期间,如果有中断产生,则单片机通过内部的硬件电路自动使IDL=0,CPU从空闲方式中退出,继续执行原来的程序。
除了以上工作方式外,对于存储器EPROM型的51单片机(8751),用户可以把程序写入EPROM,并能通过暴露在紫外光下擦除。也可以将EPROM的内容读出进行校验。另外,8751片内有一个保密位,一旦将该位写入,就可以禁止任何外部方法对片内程序存储器进行读/写操作,而且只能执行片内EPROM的程序,只有将EPROM全部擦除,保密位才能被一起擦除,以便再次建立。