• MCS-51单片机的硬件结构


    MCS-51单片机的基本组成

    MCS-51是Intel公司生产的一个单片机系列的总称.在功能上,该系列单片机有基本型和增强型两大类,通常以芯片型号的末位数字来区别。末位数字位“1”的型号是基本型,为“2”的信号是增强型。

    MCS-51单片机的内部结构如图所示,基本结构包括

    • 一个8位的CPU及片内振荡器;
    • 4KB掩膜ROM(8051),4KB EPROM(8751),无ROM(8031);
    • 128B RAM,21个特殊功能寄存器SFK;
    • 4个(P0~P3)8位并行I/O接口,一个可编程全双工通用异步串行接口(UART);
    • 具有5个中断源,2个优先级;
    • 可寻址64KB 的片外ROM和64KB的片外RAM;
    • 两个16位的定时/计数器;
    • 具有位操作功能的布尔处理机及位寻址功能。

    MCS-51单片机的引脚及其功能

    MCS-51单片机的引脚封装

    MCS-51单片机有普通的HMOS芯片和CMOS低功耗芯片。

    HMOS芯片采用双列直插封装方式,而CMOS芯片采用的封装方式有双列直插也有方形封装的。尽管封装的方式不同,但是它们的结构完全一样。

    输入/输出接口

    MCS-51单片机有4个双向8位I/O接口,它们是P0、P1、P2、P3。在无外接存储器时,这4个I/O接口均可以作为通用I/O接口使用,CPU既可以对它们进行字节操作也可以进行位操作。

    当外接程序存储器或数据存储器时,P0口和P2口不再作为通用I/O口使用。此时,P0口传送存储器地址的低8位以及双向的8位数据,P2口传送存储器地址的高8位。P0口和P2共同组成MCS-51单片机的16位地址总线,而低8位地址总线与8位双向数据总线分时复用。

    P0口

    P0口有8位,每一位由一个锁存器、两个三态输入缓冲器、控制电路和驱动电路组成。

    P0口有两种功能,一是作为通用I/O口;二是当外接存储器时,作为低8位地址总线8位双向数据总线。

    P0 口作为通用I/O 口

    作为通用I/O 口时,P0 口既可以做输入口,也可以做输出口,并且每一位都可以设定为输入或输出。做输入口时,先对锁存器写“1”,然后再输入数据,否则,可能出错。这种双向口被称为准双向口。

    当作为通用I/O 口时,CPU内部发控制信号“0”,多路转换开关MUX与下方触点闭合,锁存器的输出Q端与输出驱动器T2相接,而控制信号又封锁与门,使T1管截止。这样,驱动器T2工作在漏极开路的情况下。下面对P0 口做输入口、输出口分别进行介绍。

    1. P0 口做输入口。当P0做输入口时,外部的信号通过P0 口引脚与三态缓冲器2的输入端相连,此时三态缓冲器打开,将引脚上的数据送入内部总线。为了保证将引脚数据正确读入内部总线,T2管必须处于截止状态,若T2管处于导通状态,不管输入的数据是“1”还是“0”,都将输入信号钳位在低电平,不能正确读入数据。为了保证读入的数据正确无误,必须先对锁存器写“1”,以使T2管截止,然后再读入数据。
    2. P0 口做输出口。当P0 口做输出口时,待输出的数据通过内部总线,在写脉冲的控制下写入锁存器。此时锁存器的Q端通过MUX与T2管相连,经T2管反相后将数据直接送到P0的引脚上,此时,引脚上的数据就是所要输出的数据。通过以上分析,可以得出这样一个结论:当P0 口做通用I/O 口时,P0 口是一个准双向口。
    P0 口作为分时复用的地址/数据总线

    MC-51单片机没有单独的外部地址/数据总线。当外接存储器时,它的16位地址和8位数据的传送由P0、P2 口承担,其中P2 口负责传送高8位地址,P0 口负责传送低8位地址和8位双向数据。P0 口传送地址和数据信息釆用的是分时复用技术。

    P0 口作为分时复用的地址/数据总线时,可分为两种情况,一种是从P0 口输出地址或数据;另一种是从P0 口输入数据。

    第一种情况,CPU发出的控制信号为“1”,多路转换开关与上触点相接触,并开放与门。地址/数据信号将与门直接与T1管的栅极相接,而地址/数据信号反相后,直接与T2管的栅极相接。当地址/数据信号为“1"时,T1导通,T2截止,输出引脚输出“1”;当地址/数据信号为“0”时,T1截止,T2导通,输出引脚为“0”,保证了地址/数据信号正确地输出至引脚。

    第二种情况,从P0 口输入数据,这时输入数据从输入缓冲器2进入内部总线。在输入数据前,用户无须先对锁存器写“1”,写“1”的工作由CPU自动完成。所以,对用户而言,P0口作为地址/数据总线时,是一个真正的双向口。

    P1口

    P1 口是一个专用的8位准双向I/O 口,具有通用输入/输出口功能,每一位都能设定为输入或输出,它的位结构如图2-4所示。它的内部结构与P0 口有两点不同:

    一点是在输出驱动器部分直接用上拉电阻代替了场效应管,因此,在组成系统时,无须外接上拉电阻;另一点是由于P1 口只具有输入/输出功能,因此,无控制部分。

    由于P1 口也是准双向口,所以,当作输入时,必须先对该位的锁存器写“1”,然后再输入数据。

    P2口

    P2 口是一个8位准双向I/O 口,具有两种功能,一是作为通用I/O 口,与P1 口相同;二是作为扩展系统的高8位地址总线。输出高8位地址与P0 口一起组成16位地址总线。它的位结构如图2-5所示。

    P3口

    P3 口也是一个8位准双向I/O 口,除具有与P1 口同样的功能(即可以作为通用I/O 口使用)外,还具有第二功能。当工作在第二功能时,每位都具有新的功能,各位的定义如表2-1所示。

    P3 口的位结构如图2-6所示,当P3 口作为通用I/O 口时,与P1 口相同。

    当P3 口工作在第二功能时,各位都具有特殊的功能,作为第二输出功能的位,它的锁存器的Q端置“1”,使第二输出功能信号顺利传送到引脚。作为第二输入功能的位,它的位锁存器Q端和第二输出功能端都应置“1”,使场效应管T处于截止状态,保证信号的正确输入。

    MCS-51单片机的CPU及其时序

    CPU是单片机的核心部件,可以对数据进行算术运算、逻辑运算和位操作运算,产生一系列控制信号,协调各部分的工作。CPU包括运算器和控制器两部分。

    运算器

    运算器包括算术/逻辑部件ALU、累加器A、暂存寄存器、寄存器B、程序状态标志寄存器PSW和十进制调整电路等。运算器主要用于实现算术/逻辑运算及位操作运算。下面介绍运算器的各组成部分。

    1. 算术/逻辑部件ALU

      算术/逻辑部件ALU用以完成加、减、乘、除的算术运算及布尔代数的逻辑运算。通过对运算结果的判断影响程序状态标志寄存器PSW的某些位,从而为判断、转移、十进制调整和出错等提供依据。

    2. 累加器A

      累加器A是一个8位寄存器,它是CPU中工作最繁忙的寄存器。在算术逻辑运算中,累加器A中常请存放一个操作数或运算结果,在与外部存储器和I/O接口打交道时,进行的数据传送都要经过累加器A来完成。

    3. 寄存器B

      在乘、除运算中还要使用寄存器B。做乘法运算时,寄存器B用来存放乘数以及积的高位字节:做除法运算时,寄存器B用来存放除数以及余数。不做乘、除运算时,寄存器B可作为通用寄存器使用。

    4. 程序状态标志寄存器PSW

      程序状态标志寄存器PSW是一个8位寄存器,用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。此寄存器各位的含义如图2-7所示。Cy:进位标志位。在进行加法或减法运算时,若运算结果最高位有进位或借位,则Cy自动置“1”,否则Cy置“0”;在进行布尔操作运算时,Cy (简称C)作为布尔处理器。

      AC:辅助进位标志位。当进行加法或减法运算时,若低4位向高4位有进位或借位时,AC被置"1”,否则AC被置“0”。在十进制调整指令中AC还作为十进制调整的判别位。

      F0:用户标志位。用户可用软件对F0位置“1”或清“0”,以决定程序的流向。

      OV:溢出标志位,当运算结果溢出时,OV为“1”,否则为“0”。此标志位反映了运算结果是否溢出。

      D1:未定义位。

      P:奇偶标志位。MCS-51单片机采用偶校验。当累加器A中“1”的个数为奇数时,P置“1",否则P置“0"。此位反映累加器A中内容“1"的奇偶性,它常常用于机间通信。

      RSI、RS0:工作寄存器区选择位,用来选择当前工作的寄存器区。用户通过改变RS1、RS0的内容来选择当前工作寄存器区。RSI、RS0的内容与工作寄存器区的对应关系如表2-2所示。

    控制器

    控制器是微处理器CPU的大脑中枢。它包括定时控制逻辑、指令寄存器IR、指令译码器ID、程序计数器PC、堆栈指针SP和数据指针寄存器DPTR等控制部件。

    它的功能是根据程序计数器PC的内容取指令,然后进行指令译码,并严格按照定时控制电路依据指令译码的内容产生相应的控制信号,协调各部分的工作,完成指令所规定的操作。

    下面介绍控制器中主要部件的功能。

    1. 指令寄存器IR和指令译码器ID

      指令寄存器IR是存放指令代码的地方。当执行指令时,CPU把从程序存储器中读取的指令代码送入指令寄存器,然后经指令译码器译码后由定时控制电路发出相应的控制信号,最终完成指令所规定的操作。

    2. 程序计数器PC

      程序计数器PC的功能与普通微机相同,它用来存放CPU执行的下一条指令的地址。当一条指令按照PC所指的地址从程序存储器中取出后,PC会自动加1,指向下一条指令。程序计数器PC是一个16位的寄存器,可寻址64KB的程序存储器空间。

    3. 堆栈指针SP

      堆栈是为子程序调用和中断处理而设的。为了实现子程序调用及返回,保护中断的断点及现场和中断的正确返回,以及子程序嵌套和多重中断,需将断点和现场的数据压栈保存,执行完子程序或中断程序后还需恢复现场及断点,也就是将压栈的数据弹出,即压栈的数据釆取“先进后出”的原则,最先进栈的数据最后弹出,以此类推。

      MCS-51在片内RAM区开辟了一个堆栈,栈区可在片内RAM中移动,栈底可用软件设置。而堆栈指针SP的作用是用来指示堆栈所处的位置。栈为“空”时,SP指向栈底,当有数据压入栈时,SP的值也随之变化,压入压栈数据前,先修改SP值,即SP+1-SP,再压入数据。机器复位后,SP的内容为07H,因此,压栈的第一个数据在08H单元中。

    4. 数据指针寄存器DPTR

      数据指针寄存器DPTR是一个16位的专用寄存器,也可以作为两个8位寄存器DPH和DPL。 DPH为DPTR的高位字节,DPL为DPTR的低位字节。DPTR主要用作外部数据存储器的地址指针,可对64KB的外部数据存储器进行间接寻址。工作寄存器和特殊功能寄存器是MCS-51单片机不可缺少的组成部分,下面介绍MCS-51的工作寄存器和特殊功能寄存器。

    工作寄存器和特殊功能寄存器

    工作寄存器

    MCS-51有32个工作寄存器,分为4个区(或组),每个区有8个寄存器R0、Rl、R2、R3、R4、R5、R6和R7。每一时刻只有一个区工作。由程序状态标志寄存器PSW中的RS1、RS0的值来决定当前的工作区:

    RS1RS0=00 时,0区为工作区;
    RS1RS0=01 时,1区为工作区;
    RS1RS0=10时,2区为工作区;
    RS1RS0=11时,3区为工作区。

    这32个工作寄存器不但有名称和区号,而且还有地址。00H〜1FH共32个存储单元。

    00H—07H为0区,分别对应R0—R7;
    08H〜0FH为1区,分别对应R0〜R7;
    10H〜17H为2区,分别对应R0〜R7;
    18H〜1FH为3区,分别对应R0〜R7。

    这32个存储单元为内部数据存储器(即片内RAM)的00H~1FH存储空间,这与普通微机中的通用寄存器基本相同

    所不同的是,普通微机的通用寄存器,不占有RAM空间,因此只有名称,没有对应的地址;

    而MCS-51单片机的工作寄存器R0〜R7既可以用名称也可以用它的地址来表示。

    其中R1、R1寄存器除做工作寄存器外还常做间址寻址的地址指针。

    特殊功能寄存器SFR

    除程序计数器PC外,MCS-51单片机还有21个特殊功能寄存器,它们除有各自的名称之外,还有唯一的地址,离散地分布在片内RAM中的80〜FFH共128个存储单元中。在这128个存储单元构成的SFR块中,未被占用的单元不可使用

    MCS-51单片机存储器的结构

    存储器是存放程序和数据的部件。有些计算机将程序和数据共存于一个存储器中,进行统一编址(冯·诺伊曼结构);而有些计算机则是将程序和数据分别存放于不同的存储器中(哈佛结构),一个为程序存储器,另一个为数据存储器,从而对它们进行单独编址。

    通常通用计算机都釆用前者,而MCS-51单片机则采用后者(哈佛结构)

    MCS-51单片机有4个物理存储器:内部程序存储器、外部程序存储器、内部数据存储器和外部数据存储器

    由于内部程序存储器和外部程序存储器进行了统一编址,所以,对用户来讲,只有3个逻辑存储器:片内外统一编址的64KB的程序存储器、128B的内部数据存储器和64KB的外部数据存储器。因为MCS-51存储器釆用单独编址,所以这3个存储器地址有重叠部分,因此在访问它们时,所釆用的指令形式不同。MCS-51的存储器配置如图2-9所示。

    程序存储空间

    程序存储器(即ROM)用来存放编好的程序和表格常数。这里所说的程序是用户使用单片机为解决某个特定的任务而编制的程序。这样将程序一次性地永久存放到ROM中,不仅省去了每次开机后的程序的重新装入,还可以有效地防止因掉电或其他干扰而引起的程序丢失问题。这是单片机与通用计算机不同的一个显著特点,也是单片机工作可靠性高的关键所在。

    8051单片机内部有4KB的掩膜ROM,8751单片机内部有4KB的EPROM,而8031单片机内部没有程序存储器,必须外接程序存储器。

    数据存储器空间

    MCS-51系列单片机数据存储器分内部数据存储器(即片内RAM)和外部数据存储器(即片外RAM)。

    内部数据存储器

    MCS-51系列单片机有128B的内部数据存储器。此存储器共分为3部分:工作寄存器区、位寻址区和数据缓冲区,如图2-10所示。

    1. 工作寄存器区。4个工作寄存器区占用内部数据存储器的00H〜1FH共32个存储单元,每区8个寄存器为R0〜R7,详细内容上节己经叙述,此处不再重复。
    2. 位寻址区。内部数据存储器的20H〜2FH存储单元为位寻址区。利用位寻址区不但可以进行位操作,而且可以进行各种布尔运算。

    位寻址区占用20H〜2FH共16个存储单元,128位(16x8=128),这128位的位地址为00H~7FH,其中,每位占用1个位地址。

    外部数据存储器

    由于MCS-51系列单片机内部数据存储器只有128B,往往不够用,这就需要扩展外部数据存储器。

    外部数据存储器最多可扩至64KB, 16位数据指针寄存器DPTR作为间接寻址的寄存器的地址指针;其寻址范围为64KB。当外扩的数据存储器小于256B时,可用R0、R1作为间接寻址寄存器的地址指针。

    内部数据存储器和外部数据存储器没有釆用统一编址,而釆用的是独立编址,它们的地址有重叠。尽管地址有重叠,但访问内部数据存储器和外部数据存储器所用的指令形式不同。访问内部数据存储器用MOV指令,访问外部数据存储器用MOVX指令。因此,保证了对内部、外部数据存储器的正确访问。

    时钟电路与时序

    时钟电路

    时钟是单片机能协调工作的时间基准。时钟电路有两种形式,一种是内部方式时钟电路;另一种是外部方式时钟电路。

    内部时钟电路

    内部方式时钟电路由内部振荡器产生的振荡信号接至内部时钟电路,由内部时钟电路产生的二分频信号构成了单片机的时钟,并向CPU提供P1和P2两相时钟信号。

    内部振荡器由内部反相放大器通过引脚XTAL1和XTAL2与外接的晶体以及电容C1和C2构成并联谐振电路,产生晶体振荡信号,此晶振信号接至内部的时钟电路,如图2-11 (a)所示。

    图中的晶振频率可在2〜12MHz之间。外接晶体时,电容C1和C2通常选30pF。对外接电容值没有严格要求,但电容的大小会影响振荡频率、振荡器的稳定性和起振的速度。在设计印制电路板时,应使晶体和电容尽可能与单片机靠近,以保证稳定可靠。

    外部方式时钟电路

    外部方式时钟电路是由外部振荡器产生振荡信号,通过电平转换接至MCS-51单片机的XTAL2引脚,由XTAL2直接与内部方式时钟电路相接,而XTAL1引脚接低电平,如图2-11(b)所示。

    机器周期、指令周期和指令时序

    CPU的控制器实质上是一个复杂的同步时序电路,所有操作都是在时钟信号的控制下进行的,每执行一条指令,控制器都要发出一系列相应的控制信号,而这些控制信号在时间上的相互关系就是CPU的时序。

    CPU发出的时序控制信号分为两类。一类是控制单片机内部各部分协调工作的时序控制信号;另一类是单片机对外部接口电路、外部RAM和ROM的时序控制信号。

    后者构成单片机的外部控制总线。前一类控制信号属于内部控制信号,用户不直接接触这些信号,只做一般性的了解即可;后一类控制信号是在组成一个系统时常常直接使用的控制信号(即外部控制总线),用户必须详细了解。谈到CPU的时序,经常接触到振荡周期、时钟周期、机器周期和指令周期等基本概念,下面对它们进行介绍。

    基本概念

    1. 振荡周期
      振荡周期指为单片机提供定时信号的振荡源的周期,即晶体振荡器直接产生的振荡信号的周期。
    2. 时钟周期
      时钟周期是振荡周期的两倍,是对振荡频率2分频的信号。时钟周期又称状态周期,用S表示。一个时钟周期分为P1和P2两个节拍。P1节拍完成算术逻辑操作,P2节拍完成内部寄存器间数据的传递。
    3. 机器周期
      一个机器周期由S1〜S6共6个时钟周期组成。如果把一条指令的执行过程划分为几个基本操作,则完成一个基本操作所需的时间称为机器周期。
    4. 指令周期
      指令周期是执行一条指令所需的全部时间。MCS-51单片机的指令周期通常由1〜4个机器周期组成。

    几种典型的取指/执行时序

    要弄清程序的执行过程,不妨了解指令的执行过程。执行一条指令包括将指令从ROM中取出,然后执行。从时序的概念来讲,就是取指时序和执行时序。尽管MCS-51单片机有111条指令,但从取指/执行时序的角度来分析,只存在几种形式的时序关系。下面介绍MCS-51几种典型的取指/执行时序,如图2-12所示。

    • OSC:振荡器信号。
    • S1-S6:机器周期的6个S状态。
    • ALE:单片机的输出信号。每个机器周期有两次ALE有效,第一次发生在S1P2和S2P1期间;第二次发生在S4P2和S5P1期间。信号的有效宽度为一个S状态。每次ALE有效时,CPU就进行一次取指操作,即在一个机器周期内,进行两次取指操作
    1. 单字节单周期指令
      单字节单周期指令其指令的长度为一个字节,指令的执行时间为一个机器周期。单字节单周期指令在机器周期的S1状态即第一次ALE有效时执行取指操作,读取操作码,在S4状态即第二次ALE有效时还要读取下一个操作码,因为是单字节指令,所以第二次读取的操作码被丢掉,且程序计数PC不加1。在S6P2结束时完成此指令的全部操作,如图2-12 (a)所示。 -

    2. 双字节单周期指令
      双字节单周期指令其指令的长度为两个字节,指令的执行时间为一个机器周期。双字节单周期指令与单字节单周期指令的区别是在一个机器周期内,双字节单周期指令在一个周期内的两次读取操作均有效。二者相同之处是均在一个周期内完成指令的全部操作,如图2-12 (b)所示。

    3. 单字节双周期指令
      单字节双周期指令其指令的长度为一个字节,指令的执行时间为两个机器周期。单字节双周期指令与单字节单周期指令的区别是执行时间增加了一个机器周期。而第一个机器周期的S4状态和第二个机器周期的SI、S2状态的读取操作均被丢掉,且程序计数器均不增量。在第二个机器周期的S6P2状态完成指令的全部操作,如图2-12 (c)所示。

    4. 访问外部数据存储器指令MOVX时序
      MOVX是一条单字节双周期指令。它与一般单字节双周期指令的时序有些不同,它在第一个机器周期的S1状态读取操作码,在S4状态读取下一个操作码被丢掉,在S5状态开始送出片外数据存储器的地址后,进行读/写数据。此时就无信号输出,因此在第二个机器周期的S1、S4状态不产生取指操作;在第二个机器周期的S6P2状态完成指令的全部操作,如图2-12(d)所示。

    复位和电路复位

    复位

    在单片机应用系统中,系统开始运行和重新启动靠复位电路来实现,这种复位工作方式,叫复位方式。

    当单片机的RST引脚为高电平时,单片机进入复位状态,即回到初始状态。单片机复位后,程序计数器PC的值为0000H,故复位后的程序入口地址为0000H

    单片机复位后,不影响内部RAM中的内容,在复位有效期间,ALE、PSEN输出高电平。只要RESET引脚保持高电平,单片机将循环复位。

    复位电路

    MCS-51单片机通常釆用上电复位按钮复位两种复位方式。

    4)实用上电及按钮复位电路
    在上面介绍的复位电路中,干扰容易窜入复位端,引起内部某些寄存器错误复位。为了保证复位电路可靠工作,常在RC电路之后加史密特电路,再与RST端相接,如图2-14所示。在实际的应用系统中,有些外围芯片也需要复位。如果这些复位端的复位电平与单片机复位电平要求一致,可以直接与之相连。

    单片机的工作方式

    程序执行的方式

    1. 连续执行方式

      连续执行方式是MCS-51单片机的正常工作方式,单片机在这种方式下按照程序一步一步地完成程序所规定的任务。

      在此种方式下,CPU自始至终在不停地工作。程序的运行直接受程序计数器PC指挥。当单片机加电开始工作时,PC的值为0000H,这意味着单片机从0000H开始执行程序。0000H中存放的是一条跳转指令,跳到程序的入口地址,再一条接一条地执行程序中的指令,直至程序结束。

    2. 单步执行方式

      单步执行方式是为用户调试程序而设立的一种工作方式。在单片机开发系级的控制面板上,设有一个单步执行按键。每按一次单步执行按键,单片机就执行一条指令,带且仅仅执行一条。这样一条条地执行下去,就可发现程序中的错误,并将其定位在具体的语句上,方便修改。

    节电工作方式

    在很多情况下,单片机工作在供电困难的场合,如野外、井下、空中、无人值守的监测站和气象监测站等,要求系统尽可能减少耗电。这就需要选择低功耗的单片机以及低功耗的外围芯片。另外,单片机还具有节电工作方式。

    在MCS-51单片机中,有HMOS和CHMOS两种制造工艺芯片。HMOS芯片运行功耗大,不宜使用在低功耗应用系统中,但它有一种掉电保护功能。节电工作方式是针对CHMOS制造工艺芯片而言的,如80C31BH、80C51BH和80C71BH等。

    HMOS单片机的掉电工作方式

    HMOS单片机在正常运行时,内部RAM由主电源Vcc供电。若RST/VPD端接有备用电源,则当Vcc掉电时,此备用电源可维持内部RAM中的数据不丢失。

    当Vcc掉电时,掉电检测电路检测到掉电信号,通过INTO或INT1向CPU发出掉电中断请求。CPU响应中断请求后,执行掉电中断服务程序,该程序把一些必须保护的信息转到内部RAM中。这部分工作必须在主电源掉至下限工作电压以前完成。当备用电源RST/VPD引脚端的电压超过Vcc时,内部RAM将改用备用电源供电。当主电源恢复时,VPD仍需维持一段时间。等单片机完成复位后,备用电源才能撤出,转而Vcc继续供电。

    CHMOS单片机的节电工作方式

    CHMOS单片机的节电工作方式有等待和掉电两种工作方式。这两种工作方式都是由SFR中的电源控制寄存器PCON中相应位设定的。

    1. 电源控制寄存器PCON
      SFR中的电源控制寄存器PCON各位定义如下:

    2. 等待工作方式

      此时,IDL=0,封锁了送入CPU的时钟,CPU停止工作,进入等待状态。而时钟信号仍继续供给中断系统、串行口和定时器。此时,中断系统、串行口和定时器仍保持工作状态。

      CPU的状态被全部保留下来,程序计数器PC、全部特殊功能寄存器SFR和内部RAM中的内容保持不变,ALE、PSEN均为高电平。此时,单片机功耗比程序执行方式时大大降低。

      因此,在程序执行进程中,当CPU在原地踏步或在执行不必要的程序时,应让它进入等待工作状态,一旦需要继续工作,就让它退出等待工作方式。

      退出等待工作方式有两种方法:

      第一种方法是中断退出。在等待工作方式下,由于中断系统仍在工作,因此,在任何被允许的中断请求有效时,都可使单片机退出等待工作方式(对IDL自动清零),并执行其中断服务程序。中断服务程序执行完后,返回主程序(返回到设置等待工作方式指令的下一条指令),继续执行主程序。

      第二种方法是硬件复位退出。此时按一下复位按钮,或在RST引脚上送一个脉宽大于两个机器周期的脉冲,此时,PCON中的IDL被硬件清零,CPU重新开始执行用户程序。PCON中的通用标志位GFO和GF1可用来指示中断是在正常运行期间,还是在等待工作方式期间发生的。GFO和GF1可通过软件进行置位、清零。

    3. 掉电工作方式

      将寄存器PCON中的PD置位,单片机便进入掉电工作方式。进入掉电工作方式后,片内振荡器停止工作。此时,CPU、中断系统、串行口和定时器都停止工作,只有片内RAM和特殊功能寄存器SFR中的数据被保存起来。ALE和SPEN均为低电平。此时主电源Vcc的功耗降至最小。

      需要强调的是:当单片机进入掉电工作方式时,必须使外围器件和设备均处于禁止状态。如果必要,应断开这些电路电源,以使整个系统的功耗降到最小。要退出掉电工作方式,只能用硬件复位。复位后,SFR中的内容将重新定义,但不改变片内RAM中的内容。

  • 相关阅读:
    Git的常用命令收集
    【Android界面实现】使用ScrollingTabsView实现有滑动标签的ViewPager效果
    android ViewPager中页面延迟加载的实现
    android 项目快速修改包名
    Json详细使用(二) 序列话和反序列话
    Json的详细使用(一)处理数组/List/Map
    C++ stack around variable....错误
    刷题-滑动窗口类型 求连续数组最大值
    C# 动态绘制扇形图;
    C# livechart使用
  • 原文地址:https://www.cnblogs.com/lihello/p/12878103.html
Copyright © 2020-2023  润新知