1第二章MCS-51单片机的结构和工作原理本章介绍MCS-51单片机的结构、工作原理及其组成部件和各部件的功能。2.1MCS-51系列单片机的结构2.28051单片机内部结构和功能2.3MCS-51单片机的引脚功能2.4MCS-51单片机的工作方式2.5MCS-51单片机的时序22.1.2MCS-51单片机的应用特性2.1MCS-51系列单片机的结构2.1.1MCS-51单片机的基本组成32.1.1MCS-51单片机的基本组成存储器I/O接口4MCS-51单片机芯片有许多种:如8051、8031、8751、80C51、80C31等。它由8个部件组成,1、中央处理器(CPU)核心部件2、时钟电路12MHz3、程序存储器(ROM/EPROM)4KB4、数据存储器(RAM)128B+128BSFR5、并行I/O口(P0~P3口)6、串行口全双工串行口7、定时器/计数器2个16位8、中断系统5个中断源,高级和低级两级优先级别它们都是通过单一总线连接,并被集成在一块半导体芯片上,为单片微型计算机(Single-ChipMicrocomputer)片内存储器片内I/O接口51.MCS-51单片机系列两大系列:MCS-51子系列和MCS-52子系列。其中51子系列是基本型,而52子系列属于增强型。各子系列配置如表2-1所示。(P36)片内ROM形式无ROMEPROM80318051875180C3180C5187C5180328052875280C3280C5287C522.1.2MCS-51单片机的应用特性51子系统52子系统652子系列与51子系列相比,其功能增强的具体方面如下:1.片内RAM从128字节增加到256字节2.片内ROM从4KB增加到8KB3.定时器/计数器从2个增加到3个4.中断源从5个增加到6~7个72.单片机芯片的半导体工艺MCS-51系列单片机采用以下两种半导体工艺生产HMOS芯片型号中不带有字母“C”的,高密度短沟道MOS工艺,功耗较大。CHMOS芯片型号中凡带有字母“C”的,互补金属氧化物的HMOS工艺,具有高速度、高密度、低功耗的特点例如8051的功耗为630mW,80C51的功耗只有120mW。在便携式、手提式或野外作业仪器设备或长期无人值守自动监测、监控的仪表上是非常有意义的。因此在这些产品中最好使用CHMOS型单片机芯片.83.片内ROM存储器的配置形式及应用环境MCS-51单片机内程序存储器的配置形式有三种:掩模ROM型(由厂家一次写入,成本低)EPROM型(由用户可反复写入,成本较高)无ROM(需在片外扩展)各有特点,也各有其适用场合,可根据需要进行选择环境温度范围,划分为三个等级民用级0℃~+70℃工业级-40℃~+85℃军用级-65℃~+125℃因此在使用中应注意根据现场温度选择芯片。92.2.1中央处理器CPU2.2.2存储器结构2.2.3定时器/计数器(T/C)2.2.4并行I/O接口2.2.5串行口2.2.6中断系统2.28051单片机内部结构和功能102.28051单片机内部结构和功能11一、运算器1.算术逻辑单元(ALU—ArithmeticLogicUnit)2.累加器(ACC—Accumulator)3.寄存器B4.程序状态字(PSW—ProgramStatusWord)5.布尔处理器二、控制器1.程序计数器(PC—ProgramCounter)2.指令译码器ID3.数据指针(DPTR)4.堆栈指针(SP——StackPointer)2.2.1中央处理器CPU12一、运算器功能:运算部件实现算术、逻辑运算、位变量处理、移位、数据传送1.算术逻辑单元(ALU)8位二进制四则运算和布尔代数的逻辑运算运算结果影响PSW的有关标志位2.累加器(ACC)8位存放操作数和中间结果工作频繁,大多数操作均通过它进行3.寄存器B8位乘法时用于存乘数/积的高8位除法时用于存除数/余数4.程序状态字(PSW)8位特殊功能寄存器5.布尔处理器1位它以进位标志(CY)作为累加位进行位操作13程序状态字PSW各位标志的含义CYACF0RS1RS0OVPPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0CY(PSW.7)进位标志位AC(PSW.6)辅助进位(或称半进位)标志F0(PSW.5)用户标志位RS1和RS0(PSW.4,PSW.3)工作寄存器组选择位OV(PSW.2)溢出标志位PSW.1未定义位P(PSW.0)奇偶标志位14Cy是PSW中最常用的标志位。由硬件或软件置位和清零。字节运算中(ALU):它表示运算结果是否有进位(或借位)。加法时:有进位Cy由硬件置“1”即Cy=1;无进位Cy被硬件清“0”即Cy=0。减法时:有借位Cy由硬件置“1”即Cy=1;无借位Cy被硬件清“0”即Cy=0。位操作(布尔操作)时,Cy作为累加器使用,其作用相当于字节操作的累加器ACC。15AC(PSW.6)辅助进位(或称半进位)标志。当执行加减运算时,其运算结果产生低四位向高四位进位或借位时,AC由硬件置“1”;否则AC位被自动清“0”。一般在BCD码运算时,系统用于进行十进制调整。16F0(PSW.5)用户标志位。用户可根据自己的需要对F0位赋予一定的含义,由用户置位或复位,作为软件标志。SETBF0;置位CLRF0;复位相当于高级语言中的逻辑变量17RS1和RS0(PSW.4,PSW.3)作寄存器组选择位。这两位的值决定选择哪一组工作寄存器为当前工作寄存器组,由用户通过软件改变RS1和RS0值的组合,以切换当前选用的工作寄存器。RS1RS2寄存器组00第0组01第1组10第2组11第3组18OV(PSW.2)溢出标志位它反映运算结果是否溢出,溢出时则由硬件将OV位置“1”;否则置“0”。只有在补码运算时起作用。19溢出和进位是两种不同性质的概念。溢出是指有正负号的两个数运算时,运算结果超出了累加器以补码所能表示一个有符号数的范围。而进位则表示两数运算最高位(D7)相加(或相减)有无进位(或借位)。因此使用时应加以注意。20P(PSW.0)奇偶标志位P标志表明累加器ACC中1的个数的奇偶性。在每条指令执行完后,单片机根据ACC的内容对P位自动置位或复位。若累加器ACC中有奇数个“1”,则P=1;若累加器ACC中有偶数个“1”,则P=0。211.程序计数器(PC)16位计数器(重要)PC是程序存储器的字节地址计数器,其内容是将要执行的下一条指令的地址,寻址范围达64KB。PC有自动加1功能,从而实现程序的顺序执行。可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。二、控制器222.指令译码器ID当指令取出经指令寄存器IR送至指令译码器ID时,ID对该指令进行译码,即把指令转变成所需的电平信号,CPU根据ID输出的电平信号使定时控制电路定时地产生执行该指令所需的各种控制信号,以使计算机能正确执行程序所要求的各种操作。程序存储器PC取出指令码指令寄存器IR指令译码器ID把指令转变成所需要得电平信号CPU产生执行该指令所需的各种控制信号取指令分析指令执行指令233.数据指针(DPTR)16bit数据指针DPTR为16位寄存器。它的功能是存放16位的地址,作为访问外部程序存储器和外部数据存储器时的地址。编程时,DPTR既可按16位寄存器使用,也可以按两个8位寄存器分开使用。即:DPHDPTR的高8位DPLDPTR的低8位4.堆栈指针(SP)8bitSP的内容就是堆栈栈顶的存储单元地址。不论是数据进栈还是数据出栈,都是对堆栈的栈顶单元进行的,即对栈顶单元的写和读操作。242.2.2存储器结构2.2.2.1程序存储器2.2.2.2.片内数据存储器(RAM)2.2.2.3片外数据存储器(RAM/I/O)252.2.2存储器结构8051单片机在系统结构上采用了哈佛型,其存储器在物理结构上分程序存储器(ROM)和数据存储器(RAM)。有四个物理上相互独立的存储空间:其配置如图2-3所示。片内ROM片外ROM片内RAM片外RAM/I/O口60KB4KB64KB128BRAM128BSFR26用户使用的角度上看,8051存储空间分为三类:片内、片外统一编址0000H~0FFFFH的64K字节的程序存储器地址空间;256字节数据存储器地址空间;64K字节片外数据存储器/I/O口地址空间,地址也从0000H~0FFFFH。上述三个空间地址是重叠的,即程序存储器中片内外低4K字节地址重叠;数据存储器与程序存储器64K地址全部重叠;数据存储器中片内外低256个字节地址重叠。虽然地址重叠,但由于采用了不同的操作指令及控制信号EA、PSEN的选择,因此不会产生混乱。说明272.2.2.1程序存储器程序存储器用来存放程序和常数,分为片内和片外两部分,其中8051内部有4kB的ROM,地址范围是0000H-0FFFH,片外用16位地址线扩充64kB的ROM,两者统一编址。(从片内还是从片外取指取决于EA引脚。)28当CPU的引脚EA接高电平时,PC在0000H~0FFFH范围内,CPU从片内ROM取指令;而当PC>0FFFH后,则自动转向片外ROM去取指令。当引脚EA接低电平时,8051片内ROM不起作用,CPU只能从片外ROM取指令,地址可以从0000H开始编址对于片内无ROM的8031、8032单片机,EA应接地。以便从外部扩展EPROM中取指令。8051从片内ROM和片外ROM取指时执行速度相同。292.2.2.1程序存储器在程序存储器中有些特殊单元,其中一组特殊单元是0000H~0002H,系统复位后,PC=0000H,单片机从0000H单元开始取指令执行程序。如果程序不从0000H单元开始,应在这三个单元中存放一条无条件转移指令,以便直接转去执行用户程序。还有一组特殊单元是0003H~002AH,共40个单元。这40个单元被均匀地分为五段,作为五个中断源的中断地址区:300000H-0002H(开机复位单元)3个0003H-000AH(INT0中断地址区)8个000BH-0012H(T/C0中断地址区)8个0013H-001AH(INT1中断地址区)8个001BH-0022H(T/C1中断地址区)8个0023H-002AH(串行口中断地址区)8个2.2.2.1程序存储器中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。在中断地址区理应存放中断服务程序。但通常情况下,8个单元难以存下完整的中断服务程序,因此在该地址区的开始存放一条无条件转移指令,以便中断响应后转到中断服务程序去执行。31数据存储器用来存放运算的中间结果、标志位,及数据的暂存和缓冲等。分为片内RAM和片外RAM。8051系列单片机内数据存储器最大可寻址256个单元,片外可寻址16位(64kB)的地址空间,该空间包括外扩展I/O口的地址,两者统一编址。数据存储器322.2.2.2.片内数据存储器(RAM)33用户RAM区(堆栈、数据缓冲)(30H-7FH)位寻址区(位地址00H-7FH)(20H-2FH)第3组通用寄存器(18H-1FH)第2组通用寄存器(10H-17H)第1组通用寄存器(08H-0FH)第0组通用寄存器(00H-07H)用于存放操作数及中间结果。由于它们的功能预先不作规定,因此称为通用寄存器,也叫工作寄存器。任一时刻,CPU只能使用一组工作寄存器。(由PSW的RS0和RS1决定)可以直接对位进行寻址。(共16个单元,128个位)用于存放用户数据和及做堆栈用。00H7FH1、低128字节RAM341、工作寄存器(00H—1FH)RS1RS0寄存器组片内RAM地址00第0组00H~07H01第1组08H~0FH10第2组10H~17H11第3组18H~1FH内部RAM的三个区域:35这16个单元(共计128位)的每一位都有一个8位表示的位地址,位寻址范围为00H~7FH。位寻址区的每一个单元既可作为一般RAM单元使用,进行字节操作,也可以对单元中的每一位进行位操作。MCS-51布尔处