李芳主编单片机微型计算机与单片机微型计算机与接口技术接口技术第第11章章MCSMCS--5151单片机结构单片机结构MCS-51单片机内部结构存储器特殊功能寄存器时钟电路和复位电路引脚内容提要MCS-51系列单片机有多种型号的产品:普通型(51子系列)8031、8051、8751、89C51、89S51等。增强型(52子系列)8032、8052、8752、89C52、89S52等。它们结构基本相同,其主要差别在于存储器的配置上:8031片内没有程序存储器。8051内部设有4KB的掩模ROM程序存储器8751是将8051片内的ROM换成EPROM89C51则换成4KB的闪速EEPROM89S51同89C51,4KB的闪速E2PROM,可在线编程增强型的存储容量为普通型的一倍本课以8XX51代表这一系列的单片机。51系列单片机内部结构如图1-1所示。图1-1(图中“/”两边分别为基本型和增强型)P3P1P2可编程串行I/O口P0外部中断基准频率源控制128/256B数据存储器4KB/8KB程序存储器2/3个16位定时/计数器振荡器及定时电路CPU64KB总线扩展控制可编程并行I/O口内部中断计数脉冲串行输出串行输入1.1.2CPU1.运算器运算器的功能是。进行算术运算:加、减、乘、除、加1、减1、比较及BCD码十进制调整等逻辑运算:与、或、异或、求反、循环等逻辑操作位操作:MCS-51单片机内部有布尔处理器,它以进位标志位C为位累加器,用来处理位操作。可对位置“1”、对位清零、位判断等。操作结果的状态信息送至状态寄存PSW。CPU是单片机的核心部件。它由运算器和控制器等部件组成。2.程序计数器PC16位寄存器,用来存放即将要执行的指令地址,可对64KB程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。取出指令后,PC的内容自动加1,指向下一条指令。3.指令寄存器及指令译码器CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器暂存,经指令译码器译码后由定时与控制电路发出相应的控制信号,完成指令功能。1.2存储器存储器用于存放程序和数据,半导体存储器由一个个存储单元组成,每个单元对应一个编号(地址),一个单元存放一个8位二进制数。微型计算机的存储器地址空间有两种结构形式:普林斯顿结构哈佛结构RAM(数据区)(64KB)FFFFH0000HROM(程序区)(64KB)FFFFH0000H哈佛结构以64K的存储空间为例,微型计算机存储器的两种体系结构如下图所示。目前通用微型计算机都采用了普林斯顿结构。普林斯顿结构FFFFHRAM(数据区)ROM(程序区)0000H64KB可有相同的地址,但访问指令不同。MCS-51的储存器采用改进的哈佛结构:程序存储器和数据存储器是分开的,各有自己的寻址方式、控制信号和访问指令。但共享数据总线和地址总线。程序存储器用来存放程序和始终要保留的常数。数据存储器存放程序运行中所需要的常数和变量。hjjkkkkl从物理空间看,MCS-51有四个存储器地址空间:片内数据存储器、片外数据存储器片内程序存储器、片外程序存储器从逻辑上看,MCS-51有三个存储器空间:片内数据存储器;片外数据存储器片内、片外统一编址的程序存储器外部数据存储器(RAM)外部程序存储器(ROM)内部程序存储器内部数据存储器8XX51对于内部有ROM的单片机(51、52系列),引脚一般接高电平,使程序从内部ROM开始执行。当PC值超出内部ROM的容量时,会自动转向外部程序存储器空间。外部程序存储器地址空间为1000H~FFFFH。EA程序存储器中的几个特殊地址:地址用途0000H复位操作后的程序入口0003H外部中断0服务程序入口000BH定时器0中断服务程序入口0013H外部中断1服务程序入口001BH定时器1中断服务程序入口0023H串行口中断服务程序入口用于存放随机读写的数据。外部I/O口地址影像区。MCS-51单片机的外部数据存储器和外部I/O口实行统一编址,并使用相同的选通控制信号,均使用MOVX指令访问。MCS-51单片机最多可扩展64KB外部数据存储器1.2.2外部数据存储器FFFFH0000H外部RAM外部数据存储器内部数据存储器是使用最多的地址空间,存放随机读写的数据用作堆栈区1.2.3内部数据储存器特殊功能寄存器内部数据RAM7FH80H00HFFH特殊功能寄存器内部数据RAM7FH80H00HFFH(增强型)地址重叠8xx51基本型8xx52增强型运算操作数存放区算术运算、逻辑运算、位操作运算等指令的操作数只能在此地址空间或特殊功能寄存器地址空间。作为通用寄存器区特殊功能寄存器特殊功能寄存器内部数据RAM7FH80H00HFFH51系列单片机内部数据存储器地址范围为00~7FH。各地址区域用途如下。(1)地址0~1FH的前32个单元称为寄存器区用途:①作通用寄存器R0~R7。②R0与R1可作间址寄存器使用。内部数据存储器的地址分配:特殊功能寄存器内部数据RAM7FH80H00HFFH32个单元的寄存器区分为四组,使用时只能选其中一组寄存器。寄存器的选组由程序状态字PSW的RS1和RS0位定。RS1RS0选寄存器组000组011组102组113组使用时应注意:(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。注:特殊功能寄存器SFR内部RAMFFH80H7FH00H内部RAM内部RAMFFH80H7FH00H特殊功能寄存器SFRFFH80H地址重合8XX51(基本型)8XX52(增强型)访问SFR采用直接寻址访问高128字节RAM采用寄存器间接寻址访问低128字节RAM时两种寻址方式都可以。1.3特殊功能寄存器MCS-51单片机共有21个字节的特殊功能寄存器用英文缩写SFR(SpecialFuctionRegister)表示。主要有累加器、状态标志寄存器,以及单片机内部各逻辑单元专用的控制、状态寄存器和并行口、串行口的影射寄存器。21个特殊功能器不连续的分布在80H~FFH这段地址空间中,即80H~FFH这128个地址中有一部分是无效地址,见表1-2。其中地址末位为0或8的是可位寻址的寄存器,表1-2中用“*”表示,其位地址范围为80H~FFH,同样有一部分位地址无效。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——电源控制寄存器。1.4时钟电路与复位电路内部振荡方式:在引脚XTAL1和XTAL2外接晶体振荡器,电容器C01、C02起稳定振荡频率、快速起振的作用。电容值一般为5~30PF。XTAL1XTAL2GND8XX51C01C02图1-3内部振荡方式1.4.1时钟电路单片机的时钟信号用来提供单片机内各种微操作时间基准。内部振荡方式和外部振荡方式。外部振荡方式:是把已有的时钟信号引入单片机。这种方式适宜用于使单片机的时钟与外部信号保持一致。图1-4为CHMOS型51单片机的外部时钟的引入方式。外部时钟(TTL电平)XTAL1XTAL2GND80C51悬空图1-4外部振荡方式HMOS型51单片机外部时钟连接对HMOS型51单片机,外部时钟源的信号应接至XTAL2端,而XTAL1应接地。另外由于XTAL2端的逻辑电平不是TTL电平,故外接一个上拉电阻。XTAL2XTAL1GNDVCC上拉电阻外部时钟(TTL电平)8051外部振荡方式:1.4.2基本时序单位单片机的时序单位:振荡周期:晶振的振荡周期,又称时钟周期,为最小的时序单位。状态周期:振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期。因此,一个状态周期包含2个振荡周期。机器周期(MC):1个机器周期由6个状态周期即12个振荡周期组成。是计算机执行一种基本操作的时间单位。指令周期:执行一条指令所需的时间。一个指令周期由1~4个机器周期组成,依据指令不同而不同。振荡周期和机器周期是单片机内计算其他时间值(例如,波特率、定时器的定时时间等)的基本时序单位。例:单片机外接晶振频率12MHZ时的各种时序单位:振荡周期=1/fosc=1/12MHZ=0.0833us状态周期=2/fosc=2/12MHZ=0.167us机器周期=12/fosc=12/12MHZ=1us指令周期=(1~4)机器周期=1~4us1.4.3复位电路复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。当MCS-51系列单片机的复位引脚RST出现5ms以上的高电平时,单片机即进行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行过程中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择:C=10f,R=10KRST8XX51RCVCC1.上电复位要求接通电源后,自动实现复位。2.开关复位要求在电源接通的条件下,在单片机运行期间,用接钮开关操作使单片机复位。图1-5上电且开关复位电路单片机的复位操作会初始化SFR寄存器,但不改变片内RAM区中的内容。PC=0000H,程序计数器为零表明单片机复位后程序从0000H地址单元开始执行。A=00H表明累加器已被清零。PSW=00H表明选寄存器0组为工作寄存器组。SP=07H表明堆栈指针指向片内RAM07H单元,根据堆栈操作的先加1后压法则,第一个被压入的数据被写入08H单元中。主要特殊功能寄存器复位状态:P0~P3=FFH即四个并行口寄存器的各个位均为1。各端口既可用于输入又