汽车单片机与车载网络技术(讲义)上册主讲:李鹏伟第三章第2章MCS-51单片机内部结构和原理MCS-51单片机是高性能8位单片机,其代表是8051。该系列其他单片机以8051为核心,再增加一定的功能部件后构成的。在单片机中除了有CPU、存储器和输入/输出接口外,还有定时器/计数器、串行I/O接口和中断系统等逻辑部件。本章主要介绍MCS-51单片机的基本结构和功能、存储器、I/O口以及单片机的引脚功能等。2.1MCS-51单片机内部结构与封装2.1.1MCS-51单片机基本结构及功能MCS-51单片机是由8位CPU、程序存储器(EPROM/ROM)、数据存储器(RAM)、并行I/O口、串行I/O口、定时器/计数器、中断系统、振荡器和时钟电路等部分组成,各部分通过内部总线相连。MCS-51单片机系统结构如图2-1所示。图2-1MCS-51单片机系统结构框图下面介绍各部分的功能。中央处理器是MCS-51单片机的核心,完成运算和控制操作。故CPU由运算器和控制器两大部分组成。1.中央处理器(CPU)(1)运算器。用来完成算术运算、逻辑运算和位操作。它由算术/逻辑单元(ALU)、累加器A、寄存器B、暂存寄存器、程序状态字寄存器PSW等组成。算术/逻辑单元(ALU)由加法器和相应的控制器逻辑电路组成,可实现8位数据的加减乘除算术运算和与、或等逻辑运算,又具有位处理功能。累加器A是一个非常常用的寄存器。运算时将一个操作数经暂存寄存器送至ALU,与另一个来自暂存寄存器的操作数在ALU中运算,结果又送入累加器A中。寄存器B在乘、除运算时用来存放一个操作数,也用来存放结果的一部分。暂存寄存器用来暂时存放数据总线和其他寄存器送来的操作数。程序状态字寄存器PSW是状态标志寄存器,用来保存ALU运算结果的特征和处理状态。(2)控制器。用来统一控制和协调单片机进行工作的部件。由程序计数器PC、指令寄存器IR、指令译码器ID和定时及控制逻辑电路等部分组成。程序计数器PC是16位计数器,总是存放下一条要读取指令所在存储单元的16位地址。每取完一个字节后PC自动加1。单片机复位时PC自动清0,即装入地址0000H。指令寄存器IR用来保存当前正在执行的一条指令。指令译码器ID用来翻译操作码,确定所要执行的操作。定时与控制逻辑是CPU的核心部件,它控制读指令、执行指令、存取操作数或运算结果等操作,向其他部件发出各种操作控制信号,协调各部件工作。2.存储器MCS-51单片机的存储器物理上设计成程序存储器和数据存储器两个独立空间。MCS-51单片机片内数据存储器共有256BRAM单元,其中后128个单元被特殊功能寄存器占用(80H~FFH),供用户使用的是前128B单元(00H~7FH),用于存放运算结果、暂存数据和数据缓存。因此前128B单元简称内部RAM。片内程序存储器为4KBROM,用于存放程序和原始数据,简称片内ROM,地址范围为0000H~07FFH。3.定时器/计数器MCS-51单片机有2个16位定时器/计数器,实现定时和计数功能。4.并行I/O口MCS-51单片机有4个8位I/O口,即P0、P1、P2和P3,实现数据并行输入输出。5.串行口MCS-51单片机有一个全双工串行口(UART),利用P3.0(RXD)和P3.1(TXD)实现单片机与外设的数据传送。6.中断控制系统MCS-51单片机有5个中断源,包括2个外部中断,2个定时/计数中断,1个串行中断。有高级和低级两个优先级。7.时钟电路主要为单片机产生时钟脉冲序列,石英晶体和微调电容需要外接,典型晶振频率为11.0592MHz、12MHz和24MHz,微调电容容量为20pF~30pF。8.总线为了减少单片机的连线和引脚,提高集成度和可靠性,系统的地址信号、数据信号和控制信号都是通过总线传送的,因此有三种总线,即地址总线、数据总线和控制总线。2.1.2MCS-51单片机引脚分布及功能图2-2是89C51的引脚结构图,有双列直插封装(DIP)方式和方形封装方式。下面分别叙述这些引脚的功能。图2-289C51的引脚结构1.电源引脚VCC和VSSVCC(40脚):电源端,接+5V。VSS(20脚):接地端,有时标为GND。2.时钟信号引脚XTAL1和XTAL2XTAL1(19脚):接外部晶振和微调电容的一端,也是外部时钟源的输入端。XTAL2(18脚):接外部晶振和微调电容的另一端,采用外部时钟源时该脚悬空。判断单片机的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。PSENEA3.控制信号引脚RST、ALE、和RST(9脚):复位信号输入端,高电平有效。ALE(30脚):地址锁存允许信号端。CPU访问片外存储器时该引脚输出信号作为锁存低8位地址的控制信号。单片机正常工作时该引脚不断向外输出正脉冲信号,频率为振荡频率的1/6。PSEN(29脚):片外程序存储允许输出信号端。单片模式时该引脚不接。EA(31脚):外部程序存储器地址允许输入端。当引脚接高电平时,CPU从片内ROM访问并从内部程序存储器中的指令执行;当引脚接低电平时,CPU只访问片外ROM并执行片外程序存储器中的指令。4.输入/输出端口P0、P1、P2和P3P0口(32~39脚):8位漏极开路型双向并行I/O口。P1口(1~8脚):8位具有内部上拉电阻的准双向I/O口。P2口(21~28脚):8位具有内部上拉电阻的准双向I/O口。P3口(10~17脚):8位具有内部上拉电阻的准双向I/O口,每一位又具有特殊功能(第二功能),如表2-1所示。表2-1P3口引脚与特殊功能表INT0INT1WRRD端口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)2.2MCS-51单片机内部存储器CPU访问存储器时,一个地址对应唯一的存储器单元,可以是ROM,也可以是RAM,并用同类访问指令,此种存储器结构称为普林斯顿结构。MCS-51单片机的存储器在物理上是分开的,共有4个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器,这种程序存储器和数据存储器分开的结构形式称为哈佛结构。MCS-51单片机的存储器从逻辑上划分为3个存储地址空间:片内外统一编址的64KB程序存储器地址空间(0000H~FFFFH),64KB片外数据存储器地址空间(0000H~FFFFH),256字节片内数据存储器地址空间。CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。图2-3为MCS-51单片机的存储器配置。2.2.1程序存储器EA程序存储器用来存放调试好的应用程序和表格常数。内部有ROM的单片机,在正常运行时应把引脚接高电平,使程序从内部ROM开始执行,当PC值超过内部ROM地址空间时,自动转向外部ROM去执行程序。对内部无ROM的单片机,应始终接低电平,迫使CPU从外部ROM取指令。图2-3MCS-51单片机的存储器配置64KB程序存储器中的7个入口地址具有特殊功能。0000H单元:程序的起始地址,系统复位后PC的值为0000H,0000H~0002H单元用于初始化,一般在起始地址单元中设置一条绝对转移指令使之转向主程序处执行。其他6个特殊功能的入口地址分别对应6种中断源的中断服务程序入口地址,如表2-2所示。通常在中断入口地址处写一条跳转指令,跳转到中断服务程序处执行。表2-2中断向量入口地址表中断源入口地址外部中断00003H定时计数器T0溢出000BH外部中断10013H定时计数器T1溢出001BH串行口中断0023H定时计数器T2溢出或T2EX输入负跳变002BH2.2.2数据存储器数据存储器RAM用于存放运算的中间结果、数据暂存和缓冲等。数据存储器地址空间由内部和外部数据存储器空间组成,当访问片内RAM时,用MOV类指令;当访问片外RAM时,则用MOVX类指令。片内数据存储器在物理上又分为三部分:低128BRAM、高128BRAM(仅52系列)和特殊功能寄存器(SFR)。1.片外RAM片外RAM与片内RAM的低地址部分(0000H~00FFH)是重叠的。片内RAM使用MOV指令,片外64KBRAM空间专门为MOVX指令所用,采用R0、R1或DPTR寄存器间接寻址方式访问。如MOVXA,@DPTR。2.片内RAM(1)低128BRAM(00H~7FH)片内RAM的低128BRAM由工作寄存器区、位寻址区和数据缓冲区组成,如图2-4所示。图2-4低128BRAM区00H~1FH地址安排为4组工作寄存器区,每组有8个工作寄存器(R0~R7),共占32个单元,见表2-3。通过对程序状态字PSW中RS1、RS0的设置,每组寄存器均可选作CPU的当前工作寄存器组。表2-3工作寄存器地址表RS1RS0寄存器组R0R1R2R3R4R5R6R700工作寄存器组000H01H02H03H04H05H06H07H01工作寄存器组108H09H0AH0BH0CH0DH0EH0FH10工作寄存器组210H11H12H13H14H15H16H17H11工作寄存器组38H19H1AH1BH1CH1DH1EH1FH内部RAM中的20H~2FH是16个单元的位寻址区,这16个单元共有128位,其位地址为00H~7FH。所谓位寻址是指CPU能直接对这些位进行置“1”、清“0”、求反、传送等逻辑操作。数据缓冲区是片内RAM中30H~7FH的80个单元,只能以存储单元的形式使用,一般常把堆栈开辟于此区中。(2)高128BRAM(80H~0FFH)该存储区仅52子系列有,只可用间接寻址方式访问。(3)特殊功能寄存器(SFR)(80H~0FFH)该区存放相应功能部件的控制命令的状态或数据,MCS-51系列单片机的特殊功能寄存器共有22个,可直接寻址的有21个。①程序计数器PC(ProgramCounter)。PC是16位计数器,内容为将要执行的指令地址,有自动加1功能,以实现程序顺序执行。PC没有地址,不可以寻址。但在执行转移、调用、返回等指令时自动改变其内容实现程序执行顺序的改变。②累加器A(ACC,Accumulator)。ACC为8位寄存器,用于寄放操作数,也是ALU运算结果的暂存单元,也是数据的中转站,在变址寻址方式中把累加器作为变址寄存器使用。因此累加器A使用非常频繁。③寄存器B。8位寄存器,主要用于乘、除运算。④程序状态字PSW(ProgramStatusWord)。8位寄存器,寄存指令执行的状态信息。PSW的各位定义如下:位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位标志CYACF0RS1RS0OV—PPSW各位的功能如下:CY(PSW.7)进位标志。加减法运算时如果结果的最高位(D7位)向上有进位或借位,CY置1,否则清0。在位操作时CY又作为位累加器使用。AC(PSW.6)半进位标志。加减运算时如果运算结果低半字节(D3位)向高半字节有进位或借位,AC置1,否则清0。F0(PSW.5)用户标志位。RS1、RS0(PSW.4、PSW.3)工作寄存器组选择控制位。用软件对RS1、RS0作不同组合,以确定工作寄存器的组号,如表2-3所示。OV(PSW.2)溢出标志。带符号数补码运算时,如果有溢出,即当运算结果超出-128~+127的范围时,OV置1;无溢出时OV清0。—(PSW.1)为保留位。P(PSW.0)奇/偶标志。每个指令周期均由硬件来置位或清0,以指出累加器A中1的个数的奇偶性。若1的个数为奇数,则P置位,否则清0。⑤堆栈指针SP。堆栈是一个特殊的存储区,暂存数据和地址,它是按“先进后出”的原则存放数据的。第一个进栈的数据所在的存储单元称为栈底,最后进栈数据的存储单元叫做栈顶,SP是8位特殊功能寄存器,始终指向栈顶在片内RAM中的位置,每存或取一字节数据SP就