第2章 经典80C51的片内结构和片外封装汇总.docx
《第2章 经典80C51的片内结构和片外封装汇总.docx》由会员分享,可在线阅读,更多相关《第2章 经典80C51的片内结构和片外封装汇总.docx(40页珍藏版)》请在冰豆网上搜索。
第2章经典80C51的片内结构和片外封装汇总
第2章经典80C51的片内架构和片外封装
学习一种单片机,为什么需要学习该单片机芯片的内部结构和外部封装等硬件知识呢?
因为学习单片机的主要目的是,为了把这种单片机芯片应用到我们的科研项目或电子产品中来,把单片机现有的引脚资源和内部一切可以利用的硬件资源充分开发出来和调动起来,以便实现项目或产品的性自旨价格比的最大化。
提示:
由于(高速CMOS)CHMOS和HCMOS均属于CMOS工艺,因此,人们在描述此类单片机时,就经常简称为CMOS单片机。
注意:
对于NMOS工艺的8051和CMOS工艺的80C51,在硬件系统结构上是不完全相同的,不过差异很小。
由于NMOS(包含HMOS)工艺的单片机趋于淘汰,因此本章将以目前流行的80C51(或89C51)产品型号作为描述和学习的样板。
2.1经典80C51芯片的内部架构
80C51内部结构的功能框图如图2.1所示。
该方框图是从Intel公司公布的CHMOS单片机数据手册(DATASHEET)中经过翻译、整理而得来的.作者认为该图属于一个示意图,并不一定十分准确和全面,例如,布尔处理器、复位功能等电路就没有表现出来。
因此,仅供读者参考或用来查看80C51单片机内部的组成部件和组成关系,笔者建议初学者不必花费太多的精力去推敲它。
况且对于单片机应用开发者来说,全部搞清内部结构中的每一个部件的细节和原理也并不是十分必要的。
为了便于学习和掌握,不妨把80C51单片机的内部结构图进行重新归整和简化处理。
经过归整和简化之后,如图2.2所示。
这也是参照Intel公司发布的《MCS-51系列微控制器用户手册》(MCS-51MICROCONTROLLERFAMILYUSER'SMANUAL)中提供的方框图稍加招理得到的。
图2.1和图2.2是制造厂商在编写产品说明书时,主要从产品角度出发进行描述的。
在此基础上,笔者试图以读者为中心,从初学者逐步认识单片机的视角出发,为了便于讲解和理解,不妨把整个框图再次调整并且按重要程度划分为核心区域、功能部件和外围模块3个范畴,如图2.3所示。
图2.3是经过精心整理归纳之后更能够表达和分析单片机组成关系的方框图.为了便于循序渐进地讲解,不妨把整个框图按重要程度逐层划分,以便分析它的组织关系:
对于一款单片机芯片,最复杂也最关键的部分是"CPU内核”:
以此向周边扩展,将程序存储器ROM、数据存储器RAM和特殊功能寄存器SFR(SpecialFunctionRegister)包含进来,就构成了单片机芯片的“核心区域”;再向周边扩展,首先就是单片机芯片通常都会配置的一些“功能部件”,最后才是一些“外围模块”。
80C51结构层次关系如图2.4所示。
图2.180C51内部功能方框图
对于80C51系列中的任何一款单片机来说,其“核心区域”是最重要的,“功能部件”也是普遍配置的,而“外围模块”的种类和数量则完全可以由厂家根据单片机的设计目标和用途灵活变通和增减。
以下先对标准80C51的核心区域所包含的单元电路,以及它们的功能进行简要介绍,尽快使读者对单片机的核心硬件建立一个宏观认识。
而对于周边各种功能部件和外围模块,由于功能相对独立也比较复杂,准备在以后的章节中再作专题讲解。
图2.280C51内部结构简化图
图2.38051内部结构分区图
下面结合图2.1、图2.2和图2.3来分析80C51单片机内部的结构关系和组成关系。
图2.480C51结构层次关系
2.1.1核心区单元电路及去功能
核心区域包含的单元电路及其功能简介如下。
(1)中央处理单元CPU(CentralProcessingUnit):
是整个单片机芯片的大脑和指挥中心,其内部结构与组织在后面将作深入讲解。
(2)程序存储器ROM(或EPROM或Flash):
固化由用户预先编制好的程序和一些固定不变的表格常量数据。
(3)数据存储器RAM:
用于存储CPU在执行程序过程中所产生的中间数据或变量.普通的RAM存储器一般只能实现数据的读出操作和写入操作,而80C51中的RAM存储器的部分存储单元功能要强大得多,除了具备普通存储器功能之外,还能实现位传送、置位、清位、移位、按位与、按位或等一系列复杂操作。
(4)特殊功能寄存器SFR(SpecialFunctionRegister):
是用于专门目的的寄存器,每个寄存器单元,甚至其中的姆一个比特,都有它自己固定的用途和名称(所以又可以把特殊功能寄存器称为专用寄存器)。
主要用于存放一些专用的控制信息或状态信息。
(5)内部数据总线:
8比特宽,作为数据传输的高速通道。
负责将各个外围模块以及核心区域的A,ALU,PC.PSW,DPTR,ROM,RAM等功能部件联系起来。
电子计算机工作的过程就是按规定顺序逐条执行程序的过程,大致可以分为以下几个步骤:
(1)在程序计数器PC的指引下,从程序存储器ROM中的相应单元提取一条指令,并且送往指令寄存器。
(2)在提取一条指令之后,PC自动增量,来指向ROM中下一条即将被提取的指令。
(3)在指令寄存器内实现指令各个字段的分离,即把指令按不同的字段分解为操作码和操作数,分别送到不同的目的地。
(4)送到指令译码器的操作码,被解译为一系列微控制信号,并且在定时脉冲的同步作用下发布到各个功能电路,以实现这条指令规定的操作功能,即完成指令的执行.
(5)以上提取指令和执行指令的操作,是一个周而复始的循环操作过程,从而实现自动化程度高、智能性强的测量和控制任务。
2.1.2中央处理单元
中央处理单元CPU是单片机芯片中最复杂、最核心的智能部件,其内部包含如下3个方面:
☆运算电路:
主要由算术逻辑单元ALU构成,实现算术运算、逻辑运算、位操作等数据处理。
☆控制电路:
包括指令寄存器、指令译码和控制逻辑等电路。
☆CPU寄存器:
包括系统寄存器和通用寄存器两种。
其中,系统寄存器有6个,即累加器A、寄存器B、程序状态字PSW、堆栈指针SP、数据指针DPTR。
程序计数器PC;通用寄存器有32个,均分成4组,每组中的8个被记作R7-RO。
等效的CPU内核组织如图2.5所示。
图2.580C51的CPU内核组织等效图
1.运算电路
算术逻辑单元ALU具体实现算术运算、逻辑运算、位操作。
其包括加法、减法、乘法、除法、加1、减I、十进制数调整、比较等算术运算,与、或、异或、左移位、右移位等逻辑运算,置位、清位、位取反、位传送、位与、位或、位测试等位操作处理。
2.控制电路
(1)指令寄存器:
暂存从程序存储器中取出的指令,并将指令按不同的字段分解为操作码(表示计算机执行什么操作)和操作数(表示参加操作的数的本身或者被操作的数所在的地址)两部分,分别送到不同的目的地。
(2)指令译码和控制逻辑:
将指令的操作码部分翻译成一系列的微细操作控制信号脉冲,并分发到各功能电路以控制它们协调运作。
3.CPU通用寄存器
CPU内部共有32个通用寄存器(或称工作寄存器),主要用作CPU内部的高效缓冲区。
把32个寄存器分为4等份,定义为4个组(Bank),分别记为组0、组1、组2和组3。
在每个寄存器组中包含着8个通用寄存器,地址从低到高都分别命名为RO-R7(用“Rn”表示n=0,……,7)。
这种分组结构以及允许在不同组之间快速切换,可以给程序编写
带来极大方便。
例如,对于调用子程序,尤其是为执行中断服务子程序时所需要的现场保护提供了一种快捷方式。
等到后面学习汇编语言程序设计时读者会体会到。
每个寄存器组低端的两个寄存器RO和RI又被额外附加了一项专用功能,即可以被用作间接访问片内RAM(或片外RAM)的间接寻址寄存器(可简称间址寄存器,用“Ri”表示,i=0,1),如图2.6所示。
图2.6CPU通用寄存器
4.CPU系统寄存器
(1)累加器A:
是一个最常用的、起着核心作用的系统寄存器。
对于算术运算和逻辑运算,都把它作为操作过程的中转站,例如暂存准备参加运算的一个操作数(称为源操作数),或者暂存运算产生的结果(称为目标操作数)。
换句话说,在运算之前A是源操作数的发源地,在运算之后A是目标操作数的目的地。
(2)乘除法辅助寄存器B:
该寄存器主要用于乘法和除法操作过程.对于乘法运算,两个操作数分别取自于A和B,乘积放到AB寄存器对中;对于除法运算,被除数取自于A,除数取自于B,商存放于A,余数存放于B。
其他情况下,B也可以作为一个通用寄存器使用。
(3)程序状态字寄存器PSW(ProgramStatusWord):
是一个8位的标志寄存器,配置了4个状态位、两个控制位和两个保留位,如表2.1所示。
PSW中没有设置(在其他单片机中常见的)零标志位Z。
①4个状态位,主要用来及时反映和记录当前数值运算或数据处理等操作结果的一些算术特征,例如是否出现溢出、进位/借位、半进位、奇数。
其中,3个状态位主要用于算术运算(OV,CY,AC),1个状态位主要用于串行通信(P)。
②两个控制位,只用于迈用寄存器组的选择(RS1.RSO).
③两个保留位,没有专门用途(bit5,bit1)。
表2.1程序状态字寄存器
PSW在其他MCU或CPU中被称为条件码寄存器(对于MC68系列MCU)或状态寄存器(对于PIC系列MCU)或标志寄存器(对于80X86系列CPU)通过观察该寄存器可以从一个侧面反映一种MCU或CPU的算术运算能力的强弱。
可以说,与其他常见8位单片机相比,80C51的运算能力居于中游。
其各位的含义介绍如下。
☆CY(PSW.7):
进位/借位标志位。
在进行以字节为单位的加法或减法运算时,CY由硬件控制自动记录最高位是否产生进位或借位。
CY在指令中又被记作C。
●执行加法指令时:
CY=1表示发生了进位,CY=O表示未发生进位。
●执行减法指令时:
CY=1表示发生了借位,CY=O表示未发生借位。
☆AC(PSW.6):
辅助进位/借位标志位。
在进行字节加法或减法运算时,AC被硬件更新来记录低半字节向高半字节是否产生进位或借位。
AC主要用于十进制调整,具体是如何实现十进制调整的,可以参考后面讲到的DAA指令。
●执行加法指令时:
AC=1表示低四位向高四位发生了进位,AC=O表示低四位向高四位未发生进位。
●执行减法指令时:
AC=1表示低四位向高四位发生了借位,AC=O表示低四位向高四位未发生借位。
☆OV(PSW.2):
溢出标志位。
其作用应该分为以下3种情况来描述。
●在进行带符号数的加/减运算时,利用ov来判断结果是否超出了一个字节所能够表达的带符号数((2的补码)的范围为-128~+127。
如果超出则OV=1,否则OV=O。
●在进行无符号数乘法运算时,置于BA寄存器对中的乘积如果超出255(即FFH)则OV=1,否则OV=0。
乘积的低8位在A中,若OVA则意味着乘积没有超出A所能表达的范围255,仅从A中取积即可,否则要从BA寄存器对中取积。
●在进行无符号数除法运算时,当除数为0时,OV=1,否则OV=0。
☆RS1(PSW.4)和RSO(PSW.3):
通用寄存器组选择位,不妨称作“组选码”。
在4个CPU通用寄存器组(也叫做工作寄存器组)中确定1个为当前组。
程序执行的某一时刻只能指定其中1组作为当前操作对象。
单片机复位时这两位清0,所以默认“组0”为当前组。
●RS1、RSO=00表示选中组0(00~07H)作为当前组。
●RS1、RSO=01表示选中组1(08~OFH)作为当前组。
●RS1、RSO=10表示选中组2(10~17H)作为当前组。
●RS1、RSO=11表示选中组3(18~1FH)作为当前组。
☆FO(PSW.5):
通用标志(Flag)位。
可以由用户程序随意置位或清0,例如,可用作一个状态标记以控制程序走向等。
☆PSW.1:
该位在汇编语言中没有预先定义,留给用户自由使用,如同FO那样可以用来建立用户标志,不过,需要用位地址D1H或符号地址PSW.l来寻址该位。
用户在编写汇编语言程序时,可以事先给该位定义一个位名称(例如F1),以后就可以很方便地直接使用所定义的位名称来表示该位。
☆P(PSW.O):
奇偶校验标志位。
该位及时反映和记录累加器A内容的奇偶状态(即1的个数是奇数还是偶数)。
在通过串行接口UART所进行的串行通信中,该位有重要用途,用来检验传输数据的正确性。
●P=1表示累加器A中1的个数为奇数。
●P=O表示累加器A中1的个数为偶数。
标志P生成示意图如图2.7所示。
图2.7标志P生成示意图
(4)堆栈指针SP:
是一个既可作加计数又可作减计数的8位二进制计数寄存器,也是一个专门为堆栈操作提供8位地址的寄存器。
堆栈是建立在RAM中的一个专用存储区域,用于保存程序的断点地址。
在程序执行过程中,有时需要调用“子程序”,在进入子程序之前,必须保存主程序断点处的地址,以便在子程序执行完后,再恢复断点地址,使主程序得以继续执行。
单片机复位时,SP自动复原到初始值07H,并且此时栈顶和栈底重合。
SP可以指向片内RAM地址为OOH~7FH的128字节的任何一个单元。
因为SP始终指向堆栈顶部,所以又称堆栈指示器。
用户编写汇编语言程序时,往往需要在开头部分修改SP的初始值。
有关堆栈的结构关系可以参考2.5.3节。
(5)数据指针DPTR:
是一个16位寄存器,其高字节和低字节又分别拥有自己的寄存器符号DPH和DPL。
既可作为一个整体使用,也可作为两个8位独立的寄存器使用。
DPTR主要用作“间址寄存器”,用于存放16位间接地址码,实现对于ROM或片外RAM的“间接”访问,其位数16决定了能够寻址的最大空间为64KB(1KB=1024Byte=1024字节)。
当间接访问64KB片外RAM空间时,DPTR作为“间址寄存器”;当间接访问64KB的ROM空间时,DPTR作为“基址寄存器”。
关于间址寄存器和基址寄存器的概念在第3章中还会介绍。
(6)程序计数器PC(ProgramCounter):
是一个16位二进制加法计数寄存器,自动产生并提供对程序存储器进行取指(即提取指令)操作所需要的16位地址码(地址编码的简称)。
初始状态为PC=OOOOH;在运行期间PC值自动递增,并且始终指向下一条即将被CPU执行的指令。
2.1.3功能部件及其功能
下面对几个功能部件进行简要说明。
(1)电源电路:
负责将VDD和VSS引脚之间施加的SV电源电压分配到单片机芯片之内的各个功能电路。
只要电源电压不超出一定的范围,就能够保障单片机正常工作。
为了提高电路工作的稳定性和可靠性,通常在靠近单片机芯片的电源引脚VDD和VSS之间,跨接容量一大一小的两只电容.容量大者用于滤除电源上的低频纹波,容量小者用于滤除电源上的瞬态干扰或者毛刺波形,如图2.8所示。
(2)时钟振荡器:
就是时基发生器,产生整个芯片内部各功能电路正常操作所需的时钟脉冲和定时信号。
最常用的一种电路连接方法是,在XTAL1和XTAL2两只引脚之间外接一只晶体振荡器XTAL和两只电容C1和C2到地,如图2.8所示,与片内电路共同构成一个多谐振荡器电路。
其振荡频率取决于外接石英晶体振荡器元件XTAL的固有频率。
通常选取12MHz或6MHz的晶振。
(a)电源、时钟和复位电路(b)人工复位开关
图2.8时钟和复位常用外接电路
(3)复位电路:
当单片机芯片初始加电并且电源VDD上升到适合芯片工作的电压值时,或者人为从外部引脚RST送入一个高电平有效的复位信号时,在复位逻辑的控制下单片机进行可靠复位,然后从头开始执行程序。
最简单的一种电路连接方法是,将该脚外接一个如图2.8所示的阻容支路,以便在VDD加电、上升和趋于稳定的过程中产生一定的延时作用,来确保CPU在可靠的电源电压下开始执行程序。
如果需要单片机运行过程中的人工复位操作,可以增加一只按钮开关“RESET",并且串联一只限流电阻(也可以省略)以避免电容放电瞬间电流过大。
(4)布尔处理器:
80C51单片机内部包含一个性能独特的布尔处理器(是一位宽的处理器,也就是一个位处理器或比特处理器),这是其他非80C51单片机所不具备的,这也应该算是80C51单片机的一个特色。
对于时钟、复位和布尔处理器等功能部件,在后面还有专门章节结合应用实例作更为详细的介绍。
2.1.4外围模块及其功能
80C51单片机的架构被业界定义为标准配置,各家半导体厂商所研制的后继兼容型号,大都是在此基本模型的基础上扩充而的。
80C51的片内配备了3种类型的7个外设模块:
一种是并行输A/输出端口模块PO,P1,P2和P3,共有4个;另一种是定时器/计数器模块TO和T1,共有两个;还有一种是通用异步收发器模块UART,只有1个。
另外,我们可以认为80C51片内还隐含一个外设模块—主控并行总线接口。
(1)并行输沁输出端口模块PO,P1,P2和P3:
都是包含8条引脚的可以进行双向数据传输的准双向端口.4个端口模块其有大同小异的电路结构。
其主要功能是与外部电路交换信息。
在后面的章节中对于PO,P1,P2和P3还有更为详细的介绍。
(2)定时器研数器模块TO和T1:
该类模块主要用来实现定时或者对于外部事件进行计数。
在它们被用作计数器时,将会占用P3端口的部分引脚。
关于TO和T1的电路结构、工作原理以及应用实例,将在后面的章节作专题介绍。
(3)中断逻辑:
用于管理5个中断源,即两个外部中断
和
、两个定时器/计数器中断源TO和TI以及一个串行通信收发器中断源。
5个中断源被分为两个优先级。
中断功能就是为了增强单片机处理各种突发事件的能力而设计的。
当单片机系统正在执行程序时,出现了某种特殊状况(如定时时间到等),此时单片机需要暂时停止当前执行的主程序,转去执行服务于中断的子程序,待子程序执行完毕,再回到主程序的断点处去执行,这就形成了一次中断过程。
各种外设模块或功能部件引起的中断过程都是由中断逻辑来统一管理的。
(4)通用异步收发器模块UART:
俗称串行通信接口。
用来实现单片机应用系统与其他数字系统(例如其他单片机或微型计算机等)之间的串行数据通信。
该模块的功能较强,既可以用作全双工异步数据收发器,又可以用作半双工同步数据收发器。
在UART的功能被开发利用时,将会占用P3端口的部分引脚。
由于UART模块又具备同步通信功能,因此也可以称其为USART。
(5)并行总线接口:
80C51具备比较完善的可以对外开放的并行扩展总线,其中包含地址总线、数据总线和控制总线.片内总线是否对外开放以及何时对外开放,就由相应的总线控制逻辑来管理和控制。
通常情况下该接口处于闲置状态,只有当80C51作为主控器件以并行总线方式外扩存储器等器件时,该接口的功能才被开发出来,此时PO和P2甚至P3的两条引脚会被占用。
对于普通单片机用户尤其是初学者可以不必关心该总线接口的工作原理,甚至可以忽略它的存在。
2.2经典80C51芯片的外部封装
一款单片机无论是软件还是硬件功能多么的强大,当它嵌入到被控系统中,都是通过引脚上的信息吞吐来实现控制功能和体现自身存在价值的。
因此,需要对单片机的每一根引脚所能发挥的作用有一个全面的了解。
2.2.1封装形式
80C51采用40脚PDIP(塑料双列直插封装)、44脚PQFP和PLCC封装等几种不同的封装形式。
本小节将以用量最大的、市场上最常见的也是最廉价的40脚封装的80C51为主要描述对象,其引脚排列如图2.9所示。
图2.940脚PDIP封装全功能图
如图2.10所示是PDIP40封装80C51全功能逻辑符号图。
从该图中可以看出,有些引脚复合了多项不同的功能,并且每项功能的信号流向是不同的。
鉴于单片机应用电路的制作成本,特别是单片机的制造成本会随着单片机引脚数量的增加而显著提高,所以,在满足一定需求的前提下尽量减少引脚数量和降低封装复杂程度是单片机生产厂商共同追求的目标。
图2.10PDIP40封装80C51全功能逻辑符号
2.2.2引脚功能
从图2.9中可以看出,80C51单片机多数的引脚都具备第2功能,甚至部分引脚还有第3功能。
原因是,为了给单片机增加功能而又不增大体积,即片内功能单元的数量增加了,而芯片引出脚又不增加,就只能采取引脚功能复用的方式。
40脚的80C51单片机各个引脚的功能如表2.2所示。
表2.240脚PDIP封装80C51的引脚功能说明(全功能)
2.2.3引脚简化
对于已经熟练掌握了80C51兼容系列单片机的开发者来说,引脚功能丰富会给单片应用项目的设计和研制带来极大的灵活性。
但对于那些初次认识80C51型号单片机的初者来说,引脚功能过多会给学习过程带来一定的难度,甚至不知从何入手,影响进一步学习下去的价心和兴趁。
因此,笔者引导大家进行适当的挤简。
(1)把与单片机内部片载EPROM或Flash程序存储器的烧写和校脸操作相关的引脚功能剔除,包括VPP、
以及P0、P1和P2端口上的第3功能,理由是这些属于那些单片机烧写器(也称烧录器或编程器)等工共的研制厂商应该关注的功能。
(2)把与并行总线对外开放有关的功能回避掉,包括ADO~AD7、A8~A15、ALE、
、
和
原因是当今乃至以后单片机以“纯单片”组态方式进行开发应用,己经形成了比较明显的发展趋势。
(3)把为内部RAM提供备用电源的功能VPD舍去,其依据有:
①该脚上的该项功能很少被利用。
②近年来新生产的80C51系列单片机及其兼容型号笼本都是CMOS工艺,能耗很低,以至于使柑该脚上的VPD功能被删除。
③况且己经有更好的替代技术方案可以选择。
(4)把先讲不到的一些与片内功能单元UART、中断、定时器/计数器相关的外接功能暂时搁置起来,包括RXD、TXD、
、
、TO和T1。
后移到讲解各个片内功能单元的章节中再引出来加以详述。
;
同时,作者考虑的因素还有:
为了便于由钱入深、循序渐进地培养学习兴趣,也为了降低复杂性,便于初学者学习和掌握,还为了增弧本书的可读性,本着“化紧为简、逐层剖析、各个击破”的原则,引导读者光将注愈力集中到80C51单片机引脚的基本功能上来。
基于以上理由,可以精简为如图2.11所示的80C51引脚功能简化图。
图2.1140脚PDIP封装80C51引脚功能简化图
把图2.11中保留下来的各脚的基本功能作为80C51单片机初学者入门阶段重点掌握的内容。
现将80C51各脚的基本功能茶理成如表2.3所示。
表2.380C51引脚基本功能说明
在作了以上简化之后,对于初学者如果还是觉得不好记忆,那么,笔者来帮助大家再作进一步的精简。
这时,不仅可以把80C51复合功能引脚上的其他功能暂时回避,甚至还可以把一些对于初学阶段木必要的部分功能引脚省略。
另外,80C51单片机各引脚的功能虽然有多有少又千差万别,但是如果按引脚功能的相近程度进行归类,不妨可以将精简后的引脚划分为4大类(如表2.2所示):
电源类(包含VDD和VSS)、时钟类(包含XTAL1和XTAL2)、控制类(包含RST,其余暂时忽略)、端口类(包含P0、P1、P2和P3)。
如此一来,就将80C51单片机的外观图进一步简化为如图2.12所示的逻辑符号图。
图2.12精简的80C51逻辑符号
对于图2.12所示的精简逻辑符号,读者看上去更加简洁明了,更利于记忆和掌握。
2.2.4引脚保护
CMOS集成电路是一类极易遭受朴电和高压侵入而损坏的半导体器件。
为了有效地防止这类损坏,通常在高压侵入的必由之路即外接引脚上设置关卡—钳位电路,