1、 第三章 常用集成电路 第一节 MCS-51 单片机硬件结构 本节介绍 MCS-51 单片机的硬件结构,特别是面向用户的一些硬件。我们将从硬件设计和程序设计的角度,分析 MCS-51 的硬件结构,重点论述其应用特性和外部特性,也就是站在用户的立场上分析:单片机向我们提供了哪些资源?如何去应用它们?使读者对MCS-51 单片机的硬件结构有较为详细的了解。 一、 MCS-51 单片机硬件结构的特点 美国 Intel 公司继1976年推出 MCS-48 系列单片机后,1980年又推出了MCS-51 系列高档8位单片机。由于MCS-51 单片机是在MCS-48 的基础上推出的增强型产品,它的
2、出现直接与 HMOS 工艺有关,并提高了芯片的集成度,因而后者比前者在性能上大为提高,增加了多种片内硬件功能,并扩展了功能单元的种类和数量。 u MCS-51 单片机硬件结构有如下一些主要特点: 1) 内部程序存储器(ROM)和内部数据存储器(RAM)容量 MCS-51 单片机的内部 ROM和内部RAM的容量如表1-1所示。 1) 输入/输出(I/O)口 MCS-51 单片机内的I/O口的数量和种类较多且齐全,尤其是它有一个全双工的串行口。该串口是利用两根I/O口线构成的,有四种工作方式,可通过编程选定,MCS-51 有32根I/O口线,而MCS-48 只有27根。 2) 外部程序
3、存储器和外部数据存储器寻址空间 表1-1 MCS-51单片机存储器容量 存 储 器 类 型 单 片 机 系 列 掩模ROM EPROM RAM MCS-51 51子系列 8031 / / 128B 8051 4KB / 128B 8751 / 4KB 128B 52子系列 8032 / / 256B 8052 8KB / 256B 注:① 1KB=1024B(字节) ② 51子系列和52子系列的内部RAM容量不包括专用寄存器 ③ 本表也适用于CHMOS芯片80C31/80C51。关于CHMOS芯片
4、的特点我们将在以后章节专门介绍 MCS-51 可对64KB外部数据存储器寻址且不受该系列中各种芯片型号的影响,而对程序存储器是内外总空间为64KB,故根据表1-1不同的芯片型号,MCS-51 外部程序存储器最大寻址范围为64KB。 3) 中断与堆栈 MCS-51 有5个中断源(对8032/8052为6个),分为2个优先级,每个中断源的优先级是可编程的。它的堆栈位置也是可编程的,堆栈深度可达128字节。而MCS-48 只有不分优先级的2个中断源,且堆栈设置在片内RAM的16个字节的固定单元内。 4) 定时/计数器与寄存器区 MCS-51 子系列有2个16位定时/计数器,通过编程可以实现
5、四种工作模式。MCS-52 子系列则有3个16位定时/计数器。而MCS-48 只有一个8位定时/计数器。MCS-51 在内部RAM中开设了四个通用工作寄存器区,共32个通用寄存器,以适应多种中断或子程序嵌套的要求。而MCS-48 的内部RAM中只有两个通用工作寄存器区,每个寄存器区包含8个8位寄存器。 5) 指令系统 MCS-51 有一个比MCS-48 功能强得多的指令系统,主要表现在MCS-51 的指令系统中增添了减法、乘法、除法、比较、堆栈操作(压入和弹出)和多种位操作指令。当振荡器频率接最高12MHz时,大部分指令执行时间为1µs,少部分为2µs,乘除指令的执行时间也只有4µs。
6、6) 布尔处理器 特别值得一提的是MCS-51 的布尔处理器。它实际上是一个完整的一位微计算机,这个一位微机有自己的CPU、位寄存器、I/O口和指令集(对于MCS-51 是一个指令子集)。把八位微机和一位微机结合在一起是微机技术上的一个突破。一位机在开关决策、逻辑电路仿真和实时测控方面非常有效,而八位机在运算处理、智能仪表常用的数据采集方面有明显的长处。在MCS-51 系列单片机中八位机和一位机(布尔处理器)的硬件资源是复合在一起的,二者相辅相成,这是MCS-51 在设计上的精美之处,也是一般微机所不具备的。MCS-48 的内部没有布尔处理器。 综上就是MCS-51 单片机的主要特点,显然
7、在性能方面远远强于MCS-48 系列。 我们还可以进一步把MCS-51 单片机与单板微机(例如TP801)做一个比较。显然在硬件上MCS-51 单片机相当于将基本规模单板机具有的资源复合在一块芯片上,而且在很多方面已超过了单板机的功能。与Z80的指令系统相比较,除去数据传送能力弱些,MCS-51 的能力已大大超过了Z80。如MCS-51 增加了乘、除法指令,有完善的位处理指令,有32个通用寄存器;通用寄存器的内容可以整组进栈或出栈,128字节(MCS-52 子系列为256个字节)可直接寻址,在进行算术和逻辑运算时,等同于寄存器。 MCS-51 的这些优良特性和较高的性能价格比就是它为什么能
8、迅速在我国代替TP801、Z80、MCS-48 的基本原因,也是为什么MCS-51 应用热经久不衰的理由。 二、 MCS-51 单片机的引脚描述及片外总线结构 图1-1 MCS-51 子系列引脚配置图 1. 芯片的引脚描述 HMOS制造工艺的MCS-51 单片机都采用40引脚的双列直插封装(DIP方式),制造工艺为CHMOS的80C51/80C31芯片除采用DIP封装方式外,还采用方形封装工艺,图1-1、图1-2、图1-3分别是它们的引脚图。其中方形封装的CHMOS芯片有44只引脚,但其中4只引脚(标有NC的引脚1、12、23和34)是不使用的。在以后的讨论中,除有特殊说明以外,
9、所述内容皆适用于CHMOS芯片。 图1-2 MCS-52 子系列引脚配置图 图1-3 MCS-51 CHMOS芯片引脚配置图 图1-4是MCS-51 的逻辑符号图。在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。 图1-4 MCS-51 逻辑符号图 u 下面按其引脚功能分为四部分叙述这40条引脚的功能。 1) 主电源引脚Vcc和Vss Vcc-(40脚)接+5V电压; Vss-(20脚)接地。 2) 外接晶体引脚XTAL1和XTA
10、L2 XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。 XTAL2(18脚)接外部晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对CHMOS,此引脚应悬浮。 3) 控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN、和EA/VPP ① RST/VPD(9脚):当振荡器运行时,在此引脚上出
11、现两个机器周期的高电平将使单片机复位。推荐在此引脚与Vss引脚之间连接一个约8.2kΩ的下拉电阻,与Vcc引脚之间连接一个约10μF的电容,以保证可靠地复位(详情可参阅复位电路一节)。 Vcc掉电期间,此引脚可接上备用电源,以保持内部RAM的数据不丢失。当Vcc主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源,详细内容可参阅关于掉电保护电路一节。 ② ALE/PROG(30脚):当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现脉冲信号,此频率为振荡器频率
12、的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然后要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。 对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。 ③ PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。 ④ EA/VPP(引脚):当EA端保持高电平
13、时,访问内部程序存储器,但在PC(程序计数器)值超过OFFFH(对8051/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。 对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21伏的编程电源(VPP)。 4) 输入/输出(I/O)引脚P0、P1、P2、P3(共32根) ① P0口(39脚~32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8
14、位及数据总线复用,能以吸收电流的方式驱动8个LS TTL负载。 ② P1口(1脚~8脚):是8位准双向I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS TTL负载。对8052、8032、P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。 ③ P2口(21脚~28脚):是8位准双向I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地
15、址。P2可以驱动(吸收或输出电流)4个LS TTL负载。 ④ P3口(10脚~17脚):是8位准双向I/O口,在MCS-51 中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS TTL负载。 作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。 作为第二功能使用时,各引脚的定义如表1-2所示。 值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 表1-2 P3各口线的第二功能定义 口线 引脚 第二功能 P3.0 10 RxD(串行输入口) P3.1 11 TxD(串行输出口) P
16、3.2 12 INT0(外部中断0) P3.3 13 INT1(外部中断1) P3.4 14 T0(定时器0外部输入) P3.5 15 T1(定时器1外部输入) P3.6 16 WR(外部数据存储器写脉冲) P3.7 17 RD(外部数据存储器读脉冲) 2. MCS-51 单片机的片外总线结构 综合上面的描述可知,I/O口线不能都当作用户I/O口线。除8051/8751外真正可完全为用户使用的I/O口线只有P1口,以及部分作为第一功能使用时的P3口。图1-5是MCS-51 单片机按引脚功能分类的片外总线结构图。 图1-5 MCS-51 片外总线结构
17、图 由图1-5我们可以看到,单片机的引脚除了电源、复位、时钟接入、用户I/O口外,其余管脚都是为实现系统扩散而设置的。这些引脚构成了MCS-51 单片机片外三总线结构,即: ① 地址总线(AB):地址总线宽度为16位,因此,其外部存储器直接寻址为64K字节,16位地址总线由P0口经地址锁存器提供低8位地址(A0~A7);P2口直接提供高8位地址(A8~A15)。 ② 数据总线(DB):数据总线宽度为8位,由P0口提供。 ③ 控制总线(CB):由P3口的第二功能状态和4根独立控制线RESET、EA、ALE、PSEN组成。 三、 MCS-51 片内总体结构 MCS-51 片内总体结构的
18、详细框图如图1-6所示。它主要由九个部件组成,这九个部件是:1个8位的中央处理器;4KB/8KB的只读存储器(ROM或EPROM);128字节/256字节的数据存储器(RAM);32条I/O口线(四个8位口P0、P1、P2、P3);2个或3个(对8032/8052是3个)定时器/计数器;1个具有5个中断源、2个优先级的中断嵌套结构;用于多处理机通讯、I/O扩散或全双工UART(通用异步接收发器)的串形口;特殊功能寄存器(SFR);以及一个片内振荡器和时钟电路。这九个部件都是通过片内单一总线连接而成,其基本结构依然是通用CPU加上外围芯片的结构模式。但在功能单元的控制上却有了重大变化,采用了特殊
19、功能寄存器(SFR)的集中控制方法。关于这一点见图1-7,这个结构图是按单片机的功能部件划分,由图1-6简化得到的,是简化的结构框图。 图1-6 MCS-51片内总体结构框图 如图1-7所示。图中的ROM/EPROM部分,对于MCS-51子系列,如果是ROM就是8051,如果是EPROM就是8751,去掉ROM/EPROM部分就是8031的结构框图。为了使读者对MCS-51系列单片机的全部子系列功能配置有一个全面的了解,表1-3列出各个子系列的配置情况供读者参考。 图1-7 MCS-51片内总体结构简化框 表1-3 MCS-51系列单片机配置一览表 芯片种类 片内
20、存储器 中断源 定时/ 计数器 串型口 电源消 耗(mA) 制造 工艺 ROM/EPROM RAM 8051 (8751,8031) 4K 128 5 2 同、异步方式,8位或10位可程序控制。 125 HMOS 8052 (8752,8032) 8K 256 6 3 同、异步方式,8位或10位可程序控制。 100 HMOS 80C31 (87C51,80C31) 4K 128 5 2 同、异步方式,8位或10位可程序控制。 24 CHMOS 80C52 (87C52,80C252) 8K 256 7 3
21、同、异步方式,8位或10位可程序控制。 24 CHMOS 8044 (8744,8344) 4K 192 5 2 S.I.U 200 HMOS 四、 MCS-51 单片机中央处理器及其振荡器、时钟电路和CPU时序 1. 中央处理器 中央处理器是单片机内部的核心部件,它决定了单片机的主要功能特性。中央处理器主要由运算部件和控制部件构成。下面我们把中央处理器功能模块和有关的控制信号线联系起来加以讨论,并涉及相关的硬件设计(如振荡器电路和时钟电路)。 1) 运算部件 它包括算术、逻辑部件ALU、布尔处理器、累加器Acc、寄存器B、暂存器TMP1、和TMP2、程序状态字
22、寄存器PSW以及十进制调整电路等。运算部件的功能是实现数据的算术逻辑运算、位变量处理和数据传送操作。 MCS-51 单片机的ALU功能十分强,它不仅可对8位变量进行逻辑“与”、“或”、“异或”、循环、求补、清零等基本操作,还可以进行加、减、乘、除等基本运算。为了乘除运算的需要,设置了B寄存器。在执行乘法运算指令时,用来存放其中一个乘数和乘积的高8位数;在执行除法运算指令时,B中存放除数及余数。MCS-51 单片机的ALU还具有一般微机ALU,如Z80、MCS-48所不具备的功能,即布尔处理功能。单片机指令系统中的布尔指令集、存储器中的位地址空间与CPU中的位操作构成了片内的布尔功能系统,它可
23、对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。在实现位操作时,借用了程序状态标志寄存器(PSW)中的进位标志位Cy作为位操作的“累加器”。 运算部件中的累加器Acc是一个8位的累加器(Acc也可简写为A)。从功能上看,它与一般微机的累加器相比没有什么特别之处,但需要说明的是Acc的进位标志Cy就是布尔处理器进行位操作的一位累加器。 MCS-51单片机的程序状态PSW,是一个8位寄存器,它包含了程序的状态信息(详细内容见指令系统一节)。 2) 控制部件 控制部件是单片机的神经中枢,它包括时钟电路、复位电路、指令寄存器、译码器以及信息传送控制部件。
24、它以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来控制单片机各部分的运行。其中有一些控制信号线能简化应用系统外围控制逻辑,如控制地址锁存的地址锁存信号ALE,控制片外程序存储器运行的片内外存储器选择信号EA,以及片外取指信号PSEN。 2. 振荡电路、时钟电路和CPU时序 振荡电路和单片机内部的时钟电路一起构成了单片机的时钟方式,根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。同时,振荡周期和时钟周期又决定了CPU的时序,下面分别详细介绍。 1) 振荡电路与时钟电路 MCS-51 单片机芯片内部有一个用于构成振荡器的高
25、增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激振荡器。这种接法也就是MCS-51 单片机的内部时钟方式。 图1-8(A)HMOS型 MCS-51 单片机片内振荡器 图1-8(B) 片内振荡器的等效电路和外接元件 图1-9 HMOS 型MCS-51单片机外 部时钟源的接法 图1-8(A)是HMOS型单片机片内振荡器电路,图1-8(B)是它的等效电路和外接元件。外接晶体(在频率稳定性要求不高而希望尽可能廉价时,可
26、选用陶瓷谐振器)以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中,这时内部振荡器便自激振荡,我们可以用示波器测察到单片机的XTAL2脚输出的正弦波。对外接电容C1和C2的值虽然没有严格的要求,但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振的快速性。外接晶体时,C1和C2值常选择为30pF左右;外接陶瓷谐振荡器时,C1和C2的典型值约为47pF。在设计印刷电路板时,晶体或陶瓷谐振器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定可靠地工作。为了提高温度稳定性,应采用温度稳定性能好的电容。晶体可以在1.2MHz~12MHz之间任选,电容可以在5pF
27、~60pF之间选择,电容C1和C2的大小对振荡频率有微小的影响,可起频率微调作用。 我们也可以采用外部振荡器,这也就是MCS-51 单片机的外部时钟方式。由上面的图1-8我们可以看到引脚XTAL2就是内部时钟发生器的输入端。因此,对于HMOS型的芯片只需将外部振荡器的信号接至引脚XTAL2,而把内部反相放大器的输入端XTAL1引脚接地,如图1-9所示。通常接的外部信号一般为频率低于12MHz的方波信号。另外,由于XTAL2端的逻辑电平不是TTL的,故建议接一个上拉电阻。 关于CHMOS型的MCS-51 单片机的振荡电路与时钟电路我们在有关章节介绍。 2)
28、 CPU时序及有关概念 一条指令可以分解为若干基本的微操作,而这些微操作所对应的脉冲信号,在时间上有严格的先后次序,这些次序就是计算机的时序。时序是非常重要的概念,它指明单片机内部以及内部与外部互相联系所遵守的规律。因此,首先简要介绍有关的几个常用概念,以便后面正确地理解指令系统。 图1-10表明了各种周期的相互关系。 图1-10 MCS-51单片机各种周期的相互关系 ① 振荡周期:是指为单片机提供定时信号的振荡源的周期。 ② 时钟周期:又称状态周期或S周期。因为时钟发生器就是上述的2分频触发器,所以它是振荡周期的两倍,时钟周期被分成两个节拍,即P1节拍和P2节拍。在每个时钟的
29、前半周期,P1信号有效,这时通常完成算术逻辑操作;在每个时钟的后半周期,P2信号有效,内部寄存器与寄存器间的传输一般在此状态发生。 ③ 机器周期:一个机器周期由6个状态(12个振荡脉冲)组成,即6个时钟周期,12个振荡周期。可依次表示为S1P1(状态1拍1)、S1P2(状态1拍2)、……、S6P1(状态6拍1)、S6P2(状态6拍2),每个节拍持续一个振荡周期,每个状态持续2个振荡周期。可以用机器周期把一条指令划分成若干个阶段,每个机器周期完成某些规定操作。 ④ 指令周期:是指执行一条指令所占用的全部时间,一个指令周期通常含有1~4个机器周期。 若外接晶振为12MHz时,MCS-51 单
30、片机的四个周期的具体值为: 振荡周期 = 1/12μs; 时钟周期 = 1/6μs; 机器周期 SM > 1μs; 指令周期 = 1~4μs。 在MCS-51 的指令系统中,指令长度为1~3字节,除MUL(乘法)和DIV(除法)指令外,单字节和双字节指令都可能是单周期和双周期的,3字节指令都是双周期的,乘法指令为4周期指令。所以,若用12MHz的晶振,则指令执行时间分别为1μs、2μs和4μs。 图1-11列举了几种典型指令的CPU取指令和执行指令的时序。由于CPU取出指令和执行指令的时序,这些内部时钟信号不能从外部观察到,所以图1-11列出了XTAL2(18脚)端出现的振荡器信号
31、和芯片ALE(30脚)端的信号作参考。ALE信号为MCS-51 单片机扩展系统的外部存储器地址低8位的锁存信号,在访问程序存储器的机器周期内ALE信号两次有效,第一次发生在S1P2和S2P1期间,第二次在S4P2和S5P1期间(如图1-11所示)。在访问外部数据存储器的机器周期内,ALE信号一次有效,即执行MOVX指令时,只在S1P2至S2P1周期产生ALE信号,因此ALE的频率是不稳定的。所以,当我们把ALE引脚作为时钟输出时,在CPU执行MOVX指令时,会丢失一个周期,这一点应特别注意。图1-11中的ALE信号只是一般的情况,仅作参考。 对于单周期指令,从S1P2开始执行指令,这时操作码
32、被锁存到指令寄存器内。如果是双字节指令,则在同一机器周期的S4读入第二个字节。如果是单字节指令,在S4仍旧有读操作,但被读进来的字节(应是下一个指令的操作码)是不予考虑的,并且程序计数器不加1。图1-11(A)和(B)分别表示单字节单周期和双字节单周期指令的时序。在任何情况下,这两类指令都会在S6P2结束时完成操作。 图1-11(C)表示出单字节双周期指令的时序,在两个机器周期内发生4次读操作码的操作,但由于是单字节指令,所以,后3次读操作都是无效的。另外,比较特殊的是MUL(乘法)和DIV(除法)指令是单字节4周期的。 图 1-11 MCS-51 单片机典型指令的取指/执行时序
33、图1-11(D)表示出访问外部数据存储器指令MOVX的时序,这是一条单字节双周期指令。一般情况下,2个指令码字节在一个机器周期内从程序存储器取出,而在MOVX执行期间,少执行两次取指操作。在第1机器周期S5开始时,送出外部数据存储器地址,随后读或写数据。读写期间ALE端不输出有效信号(这就是上述提到的为什么CPU执行MOVX指令时,会丢失一个ALE周期),在第2机器周期,即外部数据存储器已被寻址和选通后,也不产生取指操作。 3) 时钟信号的输出 图 1-12 HMOS型单片机的时钟输出电路 在应用系统的设计中,系统的某些扩展I/O接口也需要时钟信号(如A/D接口等)。当系统在内部时
34、钟方式下工作时,为了简化系统设计,就希望单片机能为外部接口芯片提供时钟信号。综合上面的讨论,单片机管脚的时钟输出有两个途径:一个是上面提到的ALE引脚的输出(是振荡周期的1/6);另一个就是振荡晶体引脚信号经放大后输出,对HMOS型的单片机就是XTAL2引脚输出,如图1-12所示。CHMOS型的单片机应由XTAL1引脚输出,详细的介绍在最后一章。由ALE引脚和XTAL2引脚得到的时钟信号,经过分频或倍频即可满足不同I/O接口对时钟信号的要求。 五、 MCS-51 单片机的复位状态及几种复位电路的设计 在设计单片机应用系统时,必须了解单片机的复位状态和复位电路的设计。因为单片机应用系统工作时
35、会经常要求进入复位工作状态,所以,系统的复位电路必须能准确、可靠地工作。另外,单片机的复位状态与应用系统的复位状态又是密切相关的,因此,必须熟悉单片机的复位状态。 1. 单片机的复位状态 单片机的复位都是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,在设计复位电路时,通常使RST引脚保持10ms以上的高电平。只要RST保持高电平,则MCS-51 单片机就循环复位;当RST从高电平变为低电平以后,MCS-51单片机从0000H地址开始执行程序。在复位有效期间,ALE、
36、PSEN引脚输出高电平。 复位以后单片机的初始复位状态如表1-4所示。 表1-4 单片机的复位状态 专用寄存器 复位状态 专用寄存器 复位状态 PC 0000H TMOD 00H Acc 00H TCON 00H B 00H TH0 00H PSW 00H TL0 00H SP 07H TH1 00H DPTR 0000H TL1 00H P0~P3 FFH SCON 00H IP XXX0 0000B SBUF XXXX XXXXB IE 0XX0 0000B PCON 0XXX 0000B 注:XXX·
37、··为不定 复位后,P0口~P3口输出高电平,且使这些准双向口皆处于输入状态,并且将07H写入栈指针SP(即设定准栈底为07H),同时,将程序计数器 PC和其余的特殊功能寄存器清为0(不定的位除外)。但复位不影响单片机内部的RAM状态。 图 1-13 HMOS型单片机复位结构 2. 几种复位电路的设计 HMOS型MCS-51单片机的内部复位结构如图1-13所示。复位引脚RST/VPD(这一引脚还是掉电方式下内部RAM的供电端VPD)通过一个斯密特触发器与内部复位电路相连。斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。 1) 上电复位电路和开关复
38、位组合电路 MCS-51 单片机通常都采用上电自动复位和开关复位二种方式。复位电路的核心就是如前所述的必须保证RST引脚上出现10ms以上稳定的高电平,这样就能实现可靠地复位。因此,无论简单还是复杂的复位电路,都是为了保证这个10ms以上的稳定的高电平。 两种最简单的上电复位电路和开关复位组合电路如图1-14所示。 (a) (b) 图 1-14 复位电路:(a)上电复位 (b)电平式开关复位与上电复位 图1-14(a)是上电复位电路。在通电瞬间,在RC电路充电过程中,RST端出
39、现正脉冲,从而使单片机复位。CR和RR的值随时钟频率变化而变化,可由实验调整,当采用6MHz时钟时,CR为22µF,RR为1KΩ时,便能可靠复位。对图1-14(b)所示的复位电路,当采用6MHz时钟时,CR为22µF,R1取200Ω,R2取为1KΩ。在实际的应用系统中,有些外围芯片也需要复位,如果这些复位端的复位电平要求与单片机的复位要求一致,则可以与之相连。 上述两种简单的复位电路中,干扰易串入复位端,在大多数情况下不会造成单片机的错误复位,但会引起内部某些寄存器错误复位。这时,可在RESET复位引脚上接一个去耦电容。如果应用现场干扰严重或整个应用系统干扰严重,引起单片机复位,可采用屏蔽的
40、办法解决,如加屏蔽网或移动位置等。 在实际应用系统中,为了保证复位电路可靠地工作,常将RC电路接斯密特电路后再接入单片机复位端和外围电路复位端。这特别适合于应用现场干扰大、电压波动大的工作环境,并且,当系统有多个复位端时,能保证可靠地同步复位。 2) 几种较复杂的上电复位电路与按钮复位组合电路设计举例 图1-15是几种复位电路的设计电路图,供读者根据不同的应用场合选用。图1-15(a)为上电复位,图1-15(b)为上电复位与按钮复位组合电路,图1-15(c)是能输出两种电平的复位控制电路。 (a) (b)
41、 (c) 图 1-15 几种较复杂的复位电路 六、 存储器、特殊功能寄存器及位地址空间 u MCS-51 的存储器可分为五类: 1) 程序存储器; 2) 内部数据存储器; 3) 特殊功能寄存器; 4) 位地址空间; 5) 外部数据存储器。 MCS-51 单片机的存储器、特殊功能寄存器(SFR-Special Function Register)及位地址空间的结构如图1-16所示。 1. 程序存储器结构和运行操作 程序存储器的结构如图1-16(a)所示。程序存储器用于存放编好的程序和表格常数,它以程序计数器PC作地址指针,由于MCS-51 单片机的程序计数器为16位,因
42、此,可寻址的地址空间为64K字节。 图 1-16 MCS-51 单片机的存储器结构 8051和8751单片机内部有4K字节ROM/EPROM程序存储器,当管脚EA=1时,低4K地址(0000H~0FFFH)指向片内,而当EA=0时,低4K地址指向片外。8052内部有8K ROM程序存储器,外部同样可扩展到64K。对于片内无ROM/EPROM的单片机8031/8032构成应用系统时,必须使EA=0,程序存储器只能外部扩散。 程序存储器的操作完全由程序计数器(PC)控制。PC值指向常数、表格单元,则实现取数、查表操作。因此,程序存储器的操作分为程序运行与查表操作两类。 1) 程序运行
43、控制操作 程序的运行控制操作包括复位控制、中断控制和转移控制。 复位控制与中断控制有相应的硬件结构,其程序入口地址是固定的,如表1-5所示,用户不能更改。 表 1-5 MCS-51 单片机复位、中断入口地址 操作 入口地址 复位 0000H 外部中断 INT0 0003H 定时器中断 T0 000BH 外部中断 INT1 0013H 定时器中断 T1 001BH 串行口中断 0023H 单片机复位后程序计数器PC的内容为0000H,故系统必须从0000H单元开始取指令来执行程序,0000H单元是系统的起始地址,一般在该单元存放一条绝对跳转指令(LJMP)
44、而用户设计的主程序,从跳转后的地址开始安放。 除0000H单元外,其它5个特殊单元分别对应于5种中断源的中断服务程序的入口地址,用户应该在这些入口地址处都放一条绝对跳转指令(LJMP XXX)。加跳转指令的目的是,由于两个中断入口间仅有八个单元,存放中断服务程序显然是不够用的,必须跳到中断服务程序的起始地址。 而转移控制是由转移指令在程序中给定,分为有条件转移指令与无条件转移指令,如表1-6所示。读者只需初步了解这些指令。 2) 查表操作 值得注意的是,MCS-51 指令系统同外部程序存储器打交道的指令仅有两条,也就是两条查表指令(MOVC),其寻址方式采用基址偏址的间接寻址方式。
45、 MOVC A,@A+DPTR 该指令先将一个无符号偏址数据加到DPTR上,然后把所得的地址内容送到累加器A中,DPTR作为一个16位的基址寄存器,执行完这条指令后,DPTR的内容不变。 MOVC A,@A+PC 这第二条指令以PC作为基址寄存器,A作为偏址数据,相加后所得数据作为地址,取出该地址的内容送入累加器A中,该指令执行完后PC值不变,仍指向下一条指令。 2. 内部数据存储器的结构和运行操作 MCS-51 单片机内部有128个字节的数据存储器(8052/8032内部有256个字节的RAM,参见图1-16),内部RAM偏址为00H~7FH。MCS-51 对其内部的RAM存
46、储器有很丰富的操作指令,从而使用户在设计程序时得到了很多方便。 1) 内部数据存储器的结构和特点 片内数据存储器结构如图1-16(b)所示。它由工作寄存器、位寻址区和数据缓冲区组成,不同的地址区域内,功能不完全相同。 表 1-6 程序运行的转移控制指令 单片机内部数据存储器的特点之一是工作寄存器和数据存储器是统一编址的。内部RAM的00~1FH为工作寄存器区,共分4个区,每区有8个工作寄存器R0~R7,共32个内部RAM单元,寄存器和RAM地址的对应关系如表1-7所示。 表 1-7 工作寄存器和RAM地址对照表 0区 1区 2区 3区 地址 寄存器 地址
47、寄存器 地址 寄存器 地址 寄存器 00H R0 08H R0 10H R0 18H R0 01H R1 09H R1 11H R1 19H R1 02H R2 0AH R2 12H R2 1AH R2 03H R3 0BH R3 13H R3 1BH R3 04H R4 0CH R4 14H R4 1CH R4 05H R5 0DH R5 15H R5 1DH R5 06H R6 0EH R6 16H R6 1EH R6 07H R7 0FH R7 17H R7
48、 1FH R7 当前程序使用的工作寄存器区是由程序状态字PSW的第3位(RS0)和第4位(RS1)二位指示的,用户可以通过指令改变PSW中的RS1和RS0这二位来切换寄存器区,这种功能给用户程序保护寄存器内容提供极大的方便,应用程序设计时非常有用,PSW状态寄存器的状态和工作寄存器区的对应关系如表1-8所示。CPU通过修改PSW中RS1和RS0二位的状态,就能任选一个工作寄存器区,这个特点使MCS-51 具有快速现场保护功能,这对于提高程序的效率和响应中断的速度是很有利的。若程序中并不需要4个工作寄存器区,那么剩下的工作寄存器区所对应的单元也可作为一般的数据缓冲区使用。 表 1-8
49、 工作寄存器区的选择表 PSW.4(RS1) PSW.3(RS0) 当前使用的工作寄存器区R0~R7 0 0 0区(00H~07H) 0 1 1区(08H~0FH) 1 0 2区(10H~17H) 1 1 3区(18H~1FH) 内部RAM的20H~2FH为位寻址区域,这16个单元的每一位都有一个8位地址,位地址范围为00H~7FH。位寻址区的每一位都可以当作软件触发器,由程序直接进行位处理。程序设计时通常把各种程序状态标志,位控制变量设在位寻址区内。同样,位寻址区的RAM单元也可以作一般的数据缓冲器使用。 在用户进行实际的程序设计时,往往需要一个后进先出(
50、LIFO-Last In First Out)的RAM区,以保存CPU的现场。这种后进先出的缓冲区称为堆栈。MCS-51 单片机的堆栈,原则上可以设在内部RAM的任意区域内,但一般设在30H~7FH的范围内,栈顶的位置由栈指针SP指出。 2) 内部数据存储器的操作 片内数据存储器的复位状态及操作方法如表1-9所示。 表 1-9 内部数据存储器复位状态及操作 功能单元 地址 复位状态 操作方法 工作寄存器 00H~1FH 指向0区 PSW.4和PSW.3置位选择 堆栈 07H~ 栈底为07H SP赋值 位寻址区 20H~2FH 随机 置位与位清零 数据缓






