单片机原理与应用主讲:郑宇第2章MCS-51单片机的硬件结构•什么是单片机。•单片机的历史及发展概况。•主要生产厂家和机型•单片机的发展趋势•单片机的应用•MCS-51系列单片机•51系列单片机的硬件结构图1-1(图中“/”两边分别为基本型和增强型)可编程串行I/O口P3P1P2P0外部中断基准频率源扩展相关控制128/256B数据存储器可编程并行I/O口CPU4KB/8KB程序存储器2/3个16位定时/计数器振荡器及定时电路64KB总线扩展控制内部中断计数脉冲串行输出串行输入MCS-51的引脚•各个引脚的功能说明如下:•Vss:接地端。•Vcc:电源端,接+5V。•XTAL1,XTAL2:接外部晶体或外部时钟。•RST/VPD:①复位信号输入。•②接备用电源,当VCC掉电后,在低功耗条件下保持内部RAM中的数据。8XX51单片机有44引脚的方形封装形式和40个引脚的双列直插式封装形式,最常用的40个引脚封装,见图1-6.图1-6图1-6•ALE/PROG:•①ALE地址锁存允许。ALE输出脉冲的频率为振荡频率的1/6。•②PROG对8751单片机片内EPROM编程时,编程脉冲由该引脚引入。•PSEN:程序存储器允许。输出读外部程序存储器的选通信号。•EA/VPP:•①EA=0,单片机只访问外部程序存储器。•EA=1,单片机访问内部程序存储器。•②在8751单片机片内EPROM编程期间,此引脚引入21V编程电源VPP。图1-6•P0.0~P0.7:P0口,数据/低八位地址复用总线端口。•P1.0~P1.7:P1口,静态通用端口。•P2.0~P2.7:P2口,高八位地址总线端口。•P3.0~P3.7:P3口,双功能静态端口。•在增强型的52系列单片机中,P1.0、P1.1除为端口线外,还为定时/计数器2的外部引脚T2和T2EX。•图1-7在51系列单片机的2051/1051型号中因无P0口和P2口总线引脚,因此只有20个引脚(见图1.7),由于不能进行外部扩展,因此无PSEN引脚,它们内部有一个模拟比较器,相比较的模拟信号由P1.0(AIN0)和P1.1(AIN1)输入,而模拟比较器的输出接P3.6,在内部已连接,因此外部无P3.6引脚。CPU是单片机的核心部件。它由运算器和控制器等部件组成。1.运算器功能是进行算术运算:加、减、乘、除、加1、减1、比较、BCD码十进制调整等逻辑运算:与、或、异或、求反、循环等逻辑操作位操作:内部有布尔处理器,它以进位标志位C为位累加器,用来处理位操作。可对位置“1”、对位清零、位判断等。操作结果的状态信息送至状态寄存器PSW。MCS-51的微处理器2.程序计数器PC程序计数器PC是16位的寄存器,用来存放即将要执行的指令地址,可对64KB程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。3.指令寄存器指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送入指令存储器,经指令译码器译码后由定时与控制电路发出相应的控制信号,完成指令功能。MCS-51的微处理器•MCS-51的储存器结构与常见的微型计算机的配置方法不同,它将程序存储器和数据存储器分开,各有自己的寻址方式、控制信号和功能。程序存储器用来存放程序和始终要保留的常数。数据存储器存放程序运行中所需要的常数和变量。从物理空间看,MCS-51有四个存储器地址空间:片内数据存储器、片外数据存储器片内程序存储器、片外程序存储器MCS-51存储器物理结构见下图所示MCS-51的存储器结构外部数据存储器(RAM)外部程序存储器(ROM)内部程序存储器内部数据存储器8XX51从逻辑上看,MCS-51有三个存储器空间:片内数据存储器、片外数据存储器片内、片外统一编址的程序存储器MCS-51的存储器逻辑结构如图1-2所示。MCS-51存储器物理结构(普通型)7FH00H80HFFH(增强型)注意:引脚EA的接法决定了程序储存器的0000~0FFFH4KB地址范围是在单片机片内还是片外。图1-2MCS-51单片机的存储器逻辑结构外部RAMFFFFH0000H内部数据存储器1000H外部ROMFFFFH外部数据存储器程序存储器0FFFH内ROM(EA=1)H00008051H00000FFFH8031外ROM(EA=0)地址重叠80HFFH特殊功能寄存器二者选一程序储存器程序存储器用来存放编制好的始终保留的固定程序和表格常数。程序储存器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB。在8051/8751/89C51片内,分别内置最低地址空间的4KBROM/EPROM程序储存器(内部程序储存器),而在8031片内,则无内部程序储存器,必须外部扩展EPROM。MCS-51单片机中64KB内、外程序储存器的地址是统一编排的。8031无内部程序存储器,从0000H~FFFFH地址都是外部程序存储空间地址,所以EA应始终接地,对于内部有ROM的单片机(51、52系列),EA引脚接高电平,使程序从内部ROM开始执行。当PC值超出内部ROM的容量时,会自动转向外部程序存储器,外部程序存储器地址空间为1000H~FFFFH。若51\52系列使用时,EA接地,则直接使用外部程序存储器,内部程序存储器则全部不用(浪费了).访问程序存储器使用MOVC指令。•程序存储器中的几个特殊地址的使用:•地址用途•0000H复位操作后的程序入口•0003H外部中断0服务程序入口•000BH定时器0中断服务程序入口•0013H外部中断1服务程序入口•001BH定时器1中断服务程序入口•0023H串行口中断服务程序入口•由于两入口地址之间的存储空间有限,因此在编程时,通常在这些入口地址开始的两三个地址单元中,放入一条转移类指令,已使相应的程序转到指定的程序存储器区域中执行。外部数据存储器•用于存放随机读写的数据。•外部I/O口地址影像区。•MCS-51单片机的外部数据存储器和外部I/O口实行统一编址,并使用相同的RD和WR作选通控制信号,均使用MOVX指令访问。•MCS-51单片机最多可扩展64KB外部数据存储器内部数据储存器•内部数据存储器是使用最多的地址空间,存放随机读写的数据•通用寄存器区•堆栈区•运算操作数存放区•指令(算术运算、逻辑运算、位操作运算等)的操作数只能在此地址空间或特殊功能寄存器地址空间。内部数据存储器的地址分配•51系列单片机内部数据存储器地址范围为00~7FH。各区域地址见下表。(1)地址0~1FH的前32个单元称为寄存器区•用途:①作通用寄存器R0~R7。•②R0与R1可作间址寄存器使用。使用时应注意:•32个单元的寄存器区分为四组,使用时只能选其中一组寄存器。•寄存器的选组由程序状态字PSW的RS1和RS0位定。•RS1RS0选寄存器组•000组•011组•102组•113组•初始化时或复位时,自动选中0组。•一旦选中一组,其它三组只能作为数据存储器使用,而不能作为寄存器使用。•设置多组寄存器可以方便保护现场。(2)20H~2FH为位地址区•共16个单元,每单元有八个位,每位有一个位地址,共128位,位地址范围为00H~7FH,该区既可位寻址,又可字节寻址。•如MOV20H,C(这里C是Cy进位标志位),该指令是将Cy内容送20H位,如果Cy=1,位20H值为“1”。(3)除选中的寄存组以外的存储器均可以作为通用RAM区。(4)堆栈区8XX51单片机的堆栈设在内部RAM区,深度不大于128字节,初始化时SP指向07H。注:对51基本型单片机只有00H-7FH单元128字节的RAM区。对52增强型的单片机还有80H-FFH组成的高128字节RAM区(共256字节RAM)。MCS-51单片机共有21个字节的特殊功能寄存器用英文缩写SFR(SpecialFuctionRegister)表示。1.用途:•A累加器、状态标志寄存器•单片机内部各部件专用的控制、状态寄存器•并行口、串行口影射寄存器2.地址空间:•21个特殊功能器不连续的分布在80H~FFH128个字节地址空间,见表1-2。•地址为X0H和X8H是可位寻址的寄存器,表1-2中用“*”表示。•表1-2中还标注了各SFR的名称、字节地址、可寻址位的位地址和位名称。•21个特殊功能寄存器的名称及主要功能介绍如下,详细的用法见后面各节的内容。•A—累加器,自带有全零标志Z,A=0则Z=1;A≠0则Z=0。该标志常用于程序分支转移的判断条件。•B—寄存器,常用于乘除法运算(见第2章)。•PSW—程序状态字。主要起着标志寄存器的作用,其8位定义见表1-3。其中•CY:进/借位标志反映最高位的进位借位情况,加法为进位、减法为借位。CY=1,有进/借位;CY=0,无进/借位。•AC:辅助进/借位标志反映高半字节与低半字节之间的进/借位,AC=1有进/借位;AC=0无进/借位。•FO:用户标志位。可由用户设定其含义。•RS1,RS0:工作寄存器组选择位。D7D6D5D4D3D2D1D0CYACF0RS1RS0OV-P位地址位名称•OV:溢出标志反映补码运算的运算结果有无溢出有溢出OV=1,无溢出OV=0。•-:无效位。•P:奇偶标志运算结果有奇个“1”,P=1;运算结果有偶个“1”,P=0。影响标志位的指令及其影响方式见第2章。•SP—堆栈指针。8XX51单片机的堆栈设在片内RAM,对堆栈的操作包括压入(PUSH)和弹出(POP)两种方式,并且遵循后进先出的原则,但在堆栈生成的方向上,与8086正好相反8XX51单片机的堆栈操作遵循先加后压,先弹后减的顺序,按字节进行操作。•DPTR——数据指针寄存器用来存放16位地址值,以便用间接寻址或变址寻址片外存储器。DPTR可分成DPL和DPH两个8位寄存器分别使用。•P0P1P2P3——I/O端口寄存器是四个并行I/O端口映射入SFR中的寄存器。通过对该寄存器的读/写,可实现从相应I/O端口的输入/输出。例如:指令MOVP1,A实现了把A累加器中的内容从P1端口输出的操作。指令MOVA,P3实现了把P3端口线上的信息输入到A中的操作。此外还有如下寄存器,它们将在后面章节介绍:•IP——中断优先级控制寄存器。•IE——中断允许控制寄存器。•TMOD——定时器/计数器方式控制寄存器。•TCON——定时器/计数器控制寄存器。•TH0,TL0——定时器/计数器0。•TH1,TH1——定时器/计数器1。•SCON——串行端口控制寄存器。•SBUF——串行数据缓冲器。•PCON——电源控制寄存器。•注:在52子系列中,高128字节RAM和SFR的地址是重叠的,究竟访问哪一块可通过不同的寻址方式加以区分,访问高128字节RAM采用寄存器间接寻址,访问SFR则只能采用直接寻址,访问低128字节RAM时,两种寻址均可采用。