第二章MSC-51单片机的结构和原理第一节MCS-51单片机的内部组成及信号引脚第二节MCS-51单片机的中央处理器CPU第三节MCS-51的内部存储器第四节I/O端口、时钟电路与时序第五节MCS-51单片机工作方式第六节MCS-51单片机的存储器第一节MCS-51单片机的内部组成及信号引脚MCS-51系列单片微型机计算机包括8031、8051、8751等型号,其代表型号是8051。8051内部组成方框图如图2-1所示,本书也将主要以8051单片机的代表来介绍MCS-51系列单片机的工作原理。通常计算机须由三大基本单元,即中央处理器、存储器和输入/输出设备组成。下一页返回第一节MCS-51单片机的内部组成及信号引脚一、MCS-51单片机的基本组成8051单片机的结构组成如图2-1所示,各部分情况介绍如下:1.中央处理器顾名思义,这是单片机的核心部分。也有人将其称为MCU,在这些公司提供的器件使用手册上还有μP的写法,都是同一个意思。8051单片机的CPU由算术逻辑部件(ALU)、累加器(ACC)、寄存器B、暂存器TMP1和TMP2、程序状态寄存器(PSW)等运算部件,以及指令寄存器(IR)、指令译码器(ID)、数据指针寄存器(DPTR)、程序指针寄存器(PC)、堆栈指针(SP)等控制部件组成。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚2.内部数据寄存器(内部RAM)MCS-51的CPU能处理8位二进制。8051芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128个单元,用于存放可读写的数据。因此,通常所说的内部数据存储器就是指前128单元,简称内部RAM。3.内部程序存储器(内部ROM)根据有无片内ROM,8051单片机有三个品种,即无ROM版本为8031、工厂掩膜只读ROM版本为8051、EPROM版本为8751.8051共有4KB掩膜ROM,用于存放程序、原始数据或表格,简称内部ROM。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚4.定时器/计数器8051有两个16位定时器/计数器(T0,T1),它们由特殊功能寄存器TMOD和TCON分别选择它们的工作方式和表示它们的状态。在定时器功能中,每个机器周期定时器加1,可以认为它是机器周期计数器,由于1个机器周期包含12个振荡周期,定时器计数到的脉冲为振荡频率的1/12。5.并行I/O口MCS-51共有四个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入输出。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚6.串行口MCS-51单片机有一个全双工的串行口,以实现单片机和其他设备之间的穿行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。7.中断控制系统MCS-51单片机的中断功能较强,以满足控制应用的需要。8051共有5各中断源,即外部中断2个,定时/计数中断2个,串行中断1个。全部中断分为高级和低级两个优先级别。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚8.时钟电路MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的最高晶振频率为12MHZ。从上述内容可以看出,MCS-51虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此实际上它是一个简单的微型计算机系统。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚二、MCS-51的信号引脚MCS-51微处理器采用40引脚的双列直插封装(DIP)方式,如图2-2所示,仔0条引脚中,有2条专用于主电源的引脚,2条外接晶振引脚,4条控制引脚和3条I/O引脚。下面分别叙述各引脚的功能。主电源引脚VSS和VCC:VSS(20)接地,VCC(40)正常操作时接+5V电源。外接晶振引脚XTAL1和XTAL2:当外接晶体振荡器时,XTAL1和XTAL2分别接在外接晶体两端;当采用外部时钟方式时,XTAL1接地,XTAL2接外来振荡信号。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚控制引脚RST/VPD,ALE/、、。对于RST/VPD:当振荡器正常运行时,在此引脚上出现两个机器周期以上的高电平使微处理器复位;VCC掉电期间,此引脚可接备用电源,以保持内部RAM的数据。:当访问外部存储器时,由微处理器的P2口送出地址的高8为,P0口送出地址的低8位,数据通过P0口传送。:是程序存储器读选通信号,低电平有效。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚EA/VPP(31):当EA端保持高电平时,访问内部程序存取器(4KB),但当PC(程序计数器)值超过0FFFH时,将自动转向执行外部程序存储器内的程序;当EA保持低电平时,则只访问外部程序存储器(从0000H地址开始),而不管微处理器内部是否有程序存储器。输入输出引脚P0.0~P0.7(39~~32):P0口是一个漏极开路型准双向I/O口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。在EPROM编程时,它接收指令字节,而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。上一页下一页返回第一节MCS-51单片机的内部组成及信号引脚P1.0~P1.7(1~8):P1口是带内部上拉电阻的8位双向I/O口。在EPROM编程和程序验证时,它接收低8位地址。P2.0~P2.7(21~28):P2口是一个带内部上拉电阻的8位双向I/O口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。P3.0~P3.7(10~17):P3口是一个带内部上拉电阻的8位双向I/O口。在MCS-51中,这8个引脚还兼有专用功能。上一页返回第二节MCS-51单片机的中央处理器CPU一、运算器运算器包括算术逻辑部件ALU、位处理器、累加器A、寄存器B、暂存器以及程序状态寄存器PSW等。该模块的功能是实现数据的算术、逻辑运算、位变量处理和数据传送等操作。ALU的功能十分强,它不仅可对8位变量进行逻辑“与”、“或”、“异或”、循环、求补和清零等基本操作,还可以进行加、减、乘、除等基本运算。ALU还具有一般的微机ALU所不具备的功能,即位处理操作,它可以位(bit)变量进行处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。下一页返回第二节MCS-51单片机的中央处理器CPU由此可见,ALU在算术运算及控制处理方面能力是很强的。累加器A是一个8位的累加器,从功能上看,它与一般微机的累加器相比没什么特别之处,但需要说明的是A的进位标志Cy是特殊的,因为它同时又是位处理器的一位累加器。寄存器B是为执行乘法和除法操作设置的,在不执行乘、除法操作的一般情况下可把它当做一个普通寄存器使用。MCS-51的程序状态寄存器PSW是一个8位可读写的寄存器,它的不同位包含了程序状态的不同信息,掌握并牢记PSW各位的含义是十分重要的,因为在程序设计中,经常会与PSW的各个位打交道。PSW各位的定义如表2-1所示。上一页下一页返回第二节MCS-51单片机的中央处理器CPU二、控制器控制部件是微处理器的神经中枢,以主振频率位基准。控制器控制CPU的时序,对指令进行译码,然后发出各种控制信号,将各个硬件环节组织在一起。CPU的时序为每个机器周期(12个振荡周期)由6个状态周期组成,即S1、S2、……S6,而每个状态周期由两个时相P1,P2组成。上一页下一页返回第二节MCS-51单片机的中央处理器CPUCPU功能的强弱,主要可以用下几个指标来衡量:(1)内部总现宽度,也称字长、位数。位数越大运算精度越高,运算速度越快。(2)指令数。指令越多、编程越灵活。(3)执行每条指令所需时间或每秒钟平均执行指令条数,常用的MIPS表示每秒钟执行指令的百万条数。(4)寻址方式越多、对某一空间的寻址越灵活。MCS-51有5种寻址方式,MCS-96有6种寻址方式,Z80有6种寻址方式,MC6805有10种寻址方式。上一页返回第三节MCS-51的内部存储器一、内部数据存储器的结构(图2-3)MCS-51数据存储器在物理上和逻辑上都分为两个地址空间:一个内部和一个外部数据存储器空间。访问内部数据存储器,用MOV指令,访问外部数据存储器用MOVX指令。MCS-51内部数据存储器共有128个字节单元。内部数据存储器的00H~1FH(共32个单元)为4个寄存器工作区,每区8个寄存器,表示为R0~R7,如表2-2所示。由于每个寄存器区的8个寄存器都记为R0~R7,因此每次只能选择一个寄存器区工作。寄存器工作区的选择是通过状态标志寄存器PSW的第3、4位,即RS1、RS0进行。下一页返回第三节MCS-51的内部存储器内部数据存储器20H~2FH(16个单元)既可按字节寻址,作为一般工作单元,又可以按位CPU直接寻址,进行位操作。二、堆栈及堆栈指示器堆栈实际上是一种数据结构(如图2-4所示),是只允许在其一端进行数据插入和数据删除操作的线性表。数据写入堆栈称为压入运算(PUSH),也叫入栈。数据从堆栈中读出称之为弹出运算(POP),也叫出栈。堆栈的最大特点就是“后进先出”的数据操作规则,常把“后进先出”写为LIFO(Last-In.First-Out),即先入栈的数据存放在栈的底部。堆栈有两种类型:向上生长型和向下生长型。上一页下一页返回第三节MCS-51的内部存储器不论是数据进栈还是数据出栈,都是对堆栈的栈顶单元进行的,即对栈顶单元的写和读操作。为了指示栈顶地址,要设置堆栈指示器SP,其内容就是堆栈栈顶的存储单元地址。MCS-51系列微处理器的堆栈是以栈顶满的形式工作的。在执行PUSH期间,压入数据前,SP加1;反之,在执行POP期间,弹出数据前,SP减1.SP宽为8位。由于堆栈指针可以由指令改变,因此堆栈可以设置在片内RAM中任一连续空间内。复位后,SP初始化值位07H,所以,堆栈从08H单元开始。上一页下一页返回第三节MCS-51的内部存储器三、程序存储器程序存储器空间为0000H~FFFFH,共64KB,其结构如图2-5所示。其中低4KB(0000H-0FFFH)可以在单片机外部(8031),也可以在内部(8051、8751)。对没有片内ROM的8031,只要在硬件设计时使,就可以使程序执行始终在外部ROM中进行;对有片内ROM的8051和8751,只要在硬件设计时使,程序开始执行的前4KB总是在片内ROM中,超过0FFFH(4KB)时,在片外ROM中。上一页下一页返回第三节MCS-51的内部存储器无论,还是,都由16位程序计数器(PC)作为寻址装置。在整个程序存储器的64KB空间中,0000H~0023H空间只能用于存放中断服务子程序的向量地址,还有一组特殊单元是0003H~002AH,共40个单元。这40个单元被均匀地分为五段,作为五个中断源的中断地址,如表2-3所示。上一页返回第四节I/O端口、时钟电路与时序一、MCS-51的I/O端口输入/输出口也称为I/O端口。MCS-51单片机的四个I/O端口都是8位双向口,这些端口在结构和特性上是基本相同的,但又各具特点。I/O端口的作用在单片机中是一个集数据输入缓冲、数据输出驱动及锁存等多项功能为一体的电路。8051共有32根引脚全部为I/O端口,分为4个8位口。8051单片机的4个端口都是双向的,每个端口都包含锁存器(特殊功能寄存器中P0~P3,地址分别为80H、90H、0A0H、0B0H)、输出驱动器和输入缓冲器。下一页返回第四节I/O端口、时钟电路与时序每个端口的每一根引脚都可以独立地用作输入或输出引脚。P0端口是三态双向端口,称为数据总线端口,因为只有该端口能直接用于对外部存储器的读/写数据操作。P0端口还用以输出外部存储器的低8位地