单片机原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第二章 单片机系统结构

第一节 总体结构

自20世纪80年代初,Intel公司的MCS-51系列单片机问世以来,该系列的单片机产品已发展到几十种型号。8051是最早最典型的产品,该系列其他新的单片机产品都是以它为核心再增加了一定的功能部件后构成的。本章讨论8051单片机的系统结构和工作原理,并从单片机应用的角度,重点论述系统所提供的资源特性和使用方法。

一、结构电路

MCS-51单片机内部总体结构框图如图2-1所示。

图2-1 MCS-51结构框图

8051是ROM型单片机,内部有4KB工厂掩膜编程的ROM程序存储器;8751是

EPROM型单片机,内部有4KB用户可编程的EPROM程序存储器;8031是无ROM程

序存储器的单片机,它必须外接EPROM程序存储器。除此以外,8051、8751和8031的内部结构是完全相同的,都具有下列硬件资源:

8位中央处理器CPU;

128B内部数据存储器RAM;

4个8位双向输入/输出线;1个全双工的异步串行口;2个16位定时器/计数器;5个中断源,2个中断优先级;1个片内振荡器和时钟电路;

可寻址64KB的外部程序存储器空间和64KB的外部数据存储器空间。二、中央处理器CPU

CPU是单片机的核心,由它读入用户程序并加以执行。MCS-51系列单片机内部有一个8位CPU,它是由运算器ALU、控制器等部件组成的。

1.运算器

运算器主要包括算术逻辑运算部件(ALU):累加器ACC、B寄存器、暂存器、程序状态字寄存器PSW、十进制调整电路以及布尔处理器等。运算器主要用来实现数据的传送、数据的算术逻辑运算和位变量处理。

(1)累加器ACC。累加器ACC是算术逻辑单元ALU中操作最频繁的一个8位寄存器,它是算术运算中存放操作数和运算结果的地方;在逻辑运算和数据转移指令中,存放源操作数和目的操作数;而执行循环、测试零等指令就是在累加器中进行操作。指令系统中常用A表示累加器。

(2)B寄存器。B寄存器常用于乘除操作。乘法指令的两个操作数分别取自A和B,其乘积结果的高低8位分别存放在B和A两个8位寄存器中;除法指令中,被除数取自A,除数取自B,商数存放于A,余数存放于B。在其他指令中,B寄存器可作为通用寄存器或RAM的一个单元使用。

(3)程序状态字寄存器PSW。程序状态字寄存器是一个8位的特殊功能寄存器,它的各位包含了程序执行后的状态信息。其格式和各位的含义如下所示:

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

P

CY:进位/借位标志。又是布尔处理器的累加器C。如果数据操作的结果最高位有进

位(加法)或借位(减法)时,CY=1,否则CY=0。

AC:辅助进位/借位标志。如果操作结果低4位有进位(加法时)或低4位向高4位借位(减法时),则置位AC;否则清“0”AC。AC主要用于二—十进制数加法的十进制调整。

F0:用户定义标志位。供用户使用的软件标志,其功能和内部RAM中位寻址区的各位相似。

RS1、RS0:寄存器区选择控制位。可以用软件来置位或清零以确定工作寄存器区。RS1、RS0与寄存器区的对应关系参见表2-3。

OV:溢出标志位。当执行算术指令时,由硬件置位或清零,以指示溢出状态。

当带符号数作加法或减法运算,结果超出-128~+127范围时,OV=1;否则OV=0。溢出产生的逻辑条件是:OV=C6⊕C7,其中C6表示D6位向D7位的进位(或借位),C7表示D7位向CY位的进位(或借位)。

当无符号数作乘法运算时,其结果也会影响溢出标志OV。当置于累加器A和寄存器B中的两个数的乘积超过255时,OV=1,此乘积的高8位放在B寄存器内,低8位则放在累加器A中,否则OV=0,意味着只要从A中取得乘积即可。除法指令DIV也会影响溢出标志。当除数为0时,为无意义,OV=1,否则OV=0。

P:奇偶标志位。表示累加器A的8位中值为1的个数的奇偶性。若1的个数为奇数,则P=1;否则P=0。此标志在串行通信中常被用来检验数据传输的可靠性。

2.控制器

控制器是控制计算机系统各种操作的部件,它包括时钟发生器、定时控制逻辑、复位电路、指令寄存器IR、指令译码器、程序计数器PC、程序地址寄存器、数据指针DPTR、堆栈指针SP等。

(1)时钟电路。在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引

脚XTAL1,输出端为引脚XTAL2。在芯片的外部,XTAL1和XTAL2之间跨接晶体振

荡器和微调电容,从而构成一个稳定的自激振荡器,即单片机的时钟电路,如图2-2(a)所示。一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是2M~12MHz。

图2-2 单片机的时钟电路

在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为单片机的振荡脉冲。这时,外部的脉冲信号经XTAL2引脚注入,其连接如图2-2(b)所示。

(2)复位电路。计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。要实现单片机可靠复位,必须使RST/VPD引脚保持两个机器周期以上的高电平,只要RST保持高电平,MCS-51保

持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都输出高电平(即为输入状态)。

RST变为低电平后,退出复位,CPU从初始状态开始工作。复位以后内部寄存器的初始状态如表2-1所示。

表2-1

复位后的内部寄存器状态

RST/VPD引脚的复位操作有上电自动复位和按键手动复位两种工作方式,如图2-3所示。

图2-3 复位电路

上电自动复位是利用外部复位电路的RC充电来实现的。按键复位是通过使RST/VPD引脚经电阻与电源VCC接通实现的。

(3)指针。指针主要有程序计数器PC、数据指针DPTR和堆栈指针SP。

程序计数器PC:PC中存放即将执行的下一条指令的地址。改变PC中的内容就可改变程序执行的方向。它是一个16位寄存器,可对64KB程序寄存器直接寻址。PC是一个独立的寄存器,随时指向将要执行的指令的地址,并有内容自动加1的功能。

数据指针DPTR:16位数据指针,它由两个8位的寄存器DPH与DPL组成,一般作为访问外部数据存储器的地址指针使用,保存一个16位的地址,CPU也可以对高位字节DPH、低位字节DPL单独进行操作。

堆栈指针SP:是一个8位的专用寄存器,它用于指明堆栈顶部在内部RAM中的位置,可由软件设置初始值。系统复位后,SP初始化为07H,使得堆栈实际上由08H单元开始,但在实际应用中,SP指针一般被设置在30H~0FFH的范围内。在存取数据时遵循“先进后出,后进先出”的原则,数据进入堆栈前SP加1,数据退出堆栈后SP减1。

(4)CPU时序。CPU时序通常是指CPU在执行各类指令时所需的控制信号在时间上的先后次序。CPU取出一条指令至该指令执行完所需的时间称为指令周期,它以机器周期为单位。一个机器周期是指CPU完成一个基本操作所需要的时间,一个机器周期包含6个状态周期:S1,S2,…,S6,每个状态周期又分为两拍,称为P1和P2。CPU就以P1

和P2为基本节拍指挥单片机各个部件协调地工作。振荡周期指的是振荡信号源为单片机提供的定时信号的周期,为振荡频率的倒数,一个机器周期包括12个振荡周期,分别编

号为S1P1,S1P2,S2P1,…,S6P2。

MCS-51单片机典型的指令周期一般为一个或两个机器周期。只有MUL和DIV指令占用4个机器周期。

每一条指令的执行都包括读取和执行两个阶段。图2-4所示的是几种典型指令的读取和执行时序。由于无法观察到内部时钟信号,只能用XTAL2端的振荡信号和地址锁存允许信号ALE供参考。图2-4(a)和(b)分别表示了单字节单周期和双字节单周期指令的时序;而图2-4(c)和(d)则分别表示了单字节双周期和MOVX指令的时序。

图2-4 MCS-51指令执行时序

(a)单字节单周期指令,例如:INC A;(b)双字节单周期指令,例如:ADD A,#data;(c)单字节

双周期指令,例如:INC DPTR;(d)访问外部RAM指令MOVX(单字节双周期)

执行一条单周期指令时,在S1P2开始读取指令操作码并锁存到指令寄存器中。如果是一条双字节指令,在同一个机器周期的S4P2开始读取第二个字节。如果是一条单字节指令,在S4P2仍有一次读操作,但这次读取的指令操作码是无效的,而且程序计数器PC也不加1。不管上述何种情况,读指令操作都在S6P2结束时执行完毕。

在访问程序存储器的每个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间。ALE信号的有效宽度为一个状态周期。ALE信号出现一次,CPU就进行一次取指令操作。所以,在一个机器周期中,通常从ROM中进行两次取指令操作,但访问片外数据存储器(执行MOVX指令)时,在第二个机器周期不发出第一个ALE信号。这种情况下,ALE信号不是周期性发生的。因此,在不使用外部RAM的系统中,ALE信号是以1/6时钟频率周期性发生的,它可以给外设提供定时信号。

对片外数据存储器进行读写操作使用的是MOVX指令,它是一条单字节双周期指令。执行时,在第一个机器周期的S1P2时开始读取指令操作码,而在S4P2时虽然也进行一次读指令操作,但读取的指令操作码不被处理。从S5P1时开始送出片外数据存储器的地址,在第二个机器周期的S1P1时,RD或WR信号开始有效,用来选通RAM芯片,进行读/写数据操作,在此期间不产生ALE有效信号,所以,第二个机器周期不产生取指令操作。

三、引脚功能说明

MCS51是标准的40引脚双列直插式集成电路芯片,如图25所示。按其功能可分

为电源、时钟、控制和I/O接口四大部分。

1.电源引脚

VCC:芯片主电源,正常工作时接+5V。

VSS:电源地线。

2.时钟引脚

XTAL1与XTAL2为内部振荡器的两条引出线。3.控制引脚

(1)ALE/PROG:地址锁存控制信号/编程脉冲

图2-5 MCS-51引脚图

输入端。在扩展系统时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低8位地址和数据的隔离,P0口作为数据地址复用口线。当访问单片机外部程序或数据存储器或外接I/O口时,ALE输出脉冲的下降沿用于低8位地址的锁存信号;即使不访问单片机外部程序或数据存储器或外接I/O口,ALE端仍以晶振频率的1/6输出脉冲信号,因此可作为外部时钟或外部定时信号使用。但应注意,此时不能访

问单片机外部程序、数据存储器或外设I/O接口。

对于EEPROM型单片机(89C51)或EPROM型单片机(8751),在EEPROM或EPROM编程期间,该引脚用来输入一个编程脉冲(PROG)。

(2)PSEN:片外程序存储器读选通信号。在CPU向片外程序存储器读取指令和常数时,每个机器周期PSEN两次低电平有效。但在此期间,每当访问外部数据存储器或I/O接口时PSEN无效出现。

(3)EA/VPP:访问程序存储器控制信号/编程电源输入端。当该引脚EA信号为低电平时,只访问片外程序存储器,不管片内是否有程序存储器;当该引脚为高电平时,单片机访问片内的程序存储器。

对于EEPROM型单片机(89C51)或EPROM型单片机(8751),在EEPROM或

EPROM编程期间,该引脚用于施加一个+12V或+21V的电源。

(4)RST/VPD:复位/掉电保护信号输入端。当振荡器运行时,在该引脚加上一个两个机器周期以上的高电平信号,就能使单片机回到初始状态,即进行复位。

掉电期间,该引脚可接上备用电源(VPD)以保持内部RAM的数据。

4.I/O引脚

MCS-51单片机有四个双向8位输入/输出口P0~P3口,共32个I/O引脚。