C51单片机的结构和原理.ppt_第1页
C51单片机的结构和原理.ppt_第2页
C51单片机的结构和原理.ppt_第3页
C51单片机的结构和原理.ppt_第4页
C51单片机的结构和原理.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.1 89C51单片机的结构 2.2 89C51的引脚及其功能 2.3 CPU时序 2.4 复位操作 2.5 89C51单片机的低功耗工作方式,第二章 89C51单片机的结构和原理,2.1 89C51单片机的结构,89C51单片机内部结构示意图如下所示:,89C51 CPU,振荡器和时序 OSC,64KB 总线 扩展控制器,数据存储器 256B RAM/SFR,2个16位 定时器/计数器,4个可编程I/O,程序存储器 4KB ROM,可编程全双工 串行口,内中断,控制,P0 P1 P2 P3,RxD,外部时钟源,外部事件计数输入,TxD,外中断,中断控制,2.1 89C51单片机的结构,1) 89C51单片机的硬件资源 一个8位的微处理器CPU 片内振荡器和时钟产生电路 片内数据存储器(RAM 128B/256B) 用于存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等 片内程序存储器Flash ROM(4KB) 用于存放程序、一些原始数据和表格。但有一些单片机内部不带ROM/EPROM,如8031、8032、80C31等 4个8位并行I/O(输入/输出)接口P0P3 2个定时/计数器 每个定时/计数器都可以设置成计数或定时方式 1个全双工UART的串行I/O口 可实现单片机与单片机或其它微机之间串行通信 5个中断源,2个中断优先级的中断控制系统,MCS-51系列单片机的性能,表中型号带“C”表示所用的是CMOS工艺,具有功耗低的优点。,2) 89C51单片机 内部结构图,P0口驱动器,P2口驱动器,P0口锁存器,P2口锁存器,RAM地址寄存器,128BRAM,4KB Flash ROM,B寄存器,TMP1,TMP2,ACC,SP,程序地址寄存器,缓冲器,PC增1,PC,DPTR,中断、串行口和定时器,PSW,P1锁存器,P1驱动器,P3口锁存器,P3口驱动器,定时控制,指令寄存器,指令译码器,OSC,ALU,P0.0-P0.7,P2.0-P2.7,P3.0-P3.7,P1.0-P1.7,XTAL1 XTAL2,PSEN ALE EA RST,89C51单片机内部结构,(一)、中央处理单元(CPU)的组成:运算器与控制器 1.运算器 一个逻辑算术部件(ALU) 可进行加、减、乘、除四则运算和与、或、非、异或等逻辑运算,还具有数据传送、移位、判断和程序转移等功能 ALU由一个加法器、两个8位暂存器(TMP1和TMP2)和布尔处理器C(专门用于处理位操作)组成 定时控制部件 定时控制部件起着控制器的作用,由定时控制逻辑、指令寄存器和振荡器OSC等电路组成。 只要外接定时反馈电路,振荡器OSC就能自激振荡,为控制器提供时钟脉冲,其周期是89C51工作的基本节拍即时间的最小单位。 8位累加器ACC,寄存器B,程序状态寄存器,布尔处理器C (1) 累加器ACC(E0H):在指令系统中用A作为累加器ACC的助记符。累加器ACC是89C51最常用、最忙碌的8位特殊功能寄存器,许多指令的操作数取自于ACC,许多运算中间结果也存放于ACC。,专用寄存器组,(2) 寄存器B(F0H):专门为乘、除运算设置的8位寄存器。乘法指令的两个操作数分别取自寄存器A和B,乘积存于B和A两个8位寄存器中。除法指令中,A中存放被除数,B中放除数,商存放于A,余数存放于B。在其他指令中,B可作为一般通用寄存器或一个RAM单元使用。如: MOV A,#05H MOV B,#0FH MUL AB ;BA=A*B=5*F (3) 程序状态寄存器PSW(D0H): PSW是一个8位特殊功能寄存器,它的各位状态通常是在指令执行过程中自动形成的,可供程序查询或判别之用。,专用寄存器组,PSW各位的定义如下: Cy(PSW.7): 进位标志位。Cy也是89C51在进行位操作(布尔操作)时的位累加器,在指令中用C代替Cy。在执行加法(或减法)运算指令时,如果运算结果最高位(位7)向前有进位(或借位),则Cy位由硬件自动置1;如果运算结果最高位无进位(或借位),则Cy清0。 AC(PSW.6): 半进位标志位,也称辅助进位标志。当执行加法(或减法)操作时,如果运算结果(和或差)的低半字节(位3)向高半字节有半进位(或借位),则AC位将被硬件自动置1;否则AC被自动清0。 F0(PSW.5): 用户标志位。用户可以根据自己的需要对F0位赋予一定的含义,由用户置位或复位,可作为软件标志。 RS0和RS1(PSW.3和PSW.4): 工作寄存器组选择控制位。89C51共有4个工作寄存器组,每一组均用R0R7表示,但其在RAM中的物理地址不同, RS0和RS1值的组合可用于选择R0R7的组别。,89C51复位后,RS1=RS0=0,CPU自动选择第0组为当前工作寄存器组。(默认工作寄存器组) 根据需要,可利用传送指令对PSW整字节操作或用位操作指令改变RS1和RS0的状态,以切换当前工作寄存器组。这样的设置为程序中保护现场提供了方便。如:执行指令 MOV PSW,#08H,切换到第1组工作寄存器。,工作寄存器R0R7所在组别和片内RAM地址与RS1、RS0之间的关系,OV(PSW.2):溢出标志位。溢出标志位OV=C7 C6(异或),该标志位只有带符号数运算时才有用。当进行8位二进制数的补码运算时,如果运算结果超出128127的范围,则有溢出,OV位由硬件自动置1;否则无溢出,OV=0。 PSW.1:为保留位。89C51未用,89C52为F1用户标志位。 P(PSW.0):奇偶校验标志位。每条指令执行完后,该位始终跟踪指示累加器A中1的个数。如结果A中有奇数个1,则置P=1;否则P=0。常用于校验串行通信中的数据传送是否出错。 如:执行以下指令后,问PSW中各位的状态是什么? MOV A, #0FH ADD A, #F8H,2. 控制器 控制器是发布操作命令的“决策机构”,是计算机的指挥中心。主要有指令部件、时序部件和微操作控制部件等三部分组成。 指令部件:是一种能对指令进行分析、处理和产生控制信号的逻辑部件,也是控制器的核心。通常,指令部件有程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)组成。 程序计数器PC:16位,由2个8位的计数器PCH和PCL组成。是程序的字节地址计数器。PC存放的内容是即将要执行的下一条指令的地址。当机器根据PC中的地址取出要执行指令的一个字节后,PC的内容自动加1,指向指令的下一个字节。 指令寄存器IR:有8位长,用于存放从存储器中取出的当前要执行指令的指令码。 指令译码器ID:对指令操作码进行译码,确定该指令要执行何种操作。,时序部件:由系统时钟和脉冲分配器组成,用于产生微操作控制部件所需的定时脉冲信号。 微操作控制部件:可以为指令译码器输出信号配上节拍电位和节拍脉冲,也可和外部进来的控制信号组合,共同形成相应的微操作控制序列,以完成规定的操作。,89C51单片机内部结构,(二)存储器结构 MCS-51的存储器可分为片内,片外程序存储器;片内和片外数据存储器。 1. 程序存储器 一般将只读存储器(ROM)用做程序存储器。可寻址空间为64KB,用于存放用户程序、数据和表格等信息。,MCS-51单片机按程序存储器可分为内部无ROM型(如8031)和内部有ROM型(如8051)两种,连接时引脚有区别。程序存储器结构如右图所示。,片内容量为4KB,地址范围为0000H0FFFH。 片外最多可扩至64KB ROM/EPROM,地址范围为1000HFFFFH。 片内外统一编址。 ROM的寻址方式: 1)当 EA=“1”时: 在00000FFFH范围内执行片内ROM中的程序,当指令地址超过0FFFH 后就自动转向片外ROM中取指令。 2)当 EA=“0”时: 片内ROM不起作用,CPU只能从片外ROM/EPROM中取指令,可从 0000H 开始寻址。 3)片内ROM和片外ROM取指的速度相同。,4)程序存储器的保留存储单元,如表2-2所示。 (1)0000H0002H 三个单元: 用作上电复位后引导程序的存放单元。因为复位后PC的内容为0000H,CPU总是从地址0000H开始执行程序。将转移指令存放到这3个单元,程序就被引导到指定的程序存储器空间去执行。(why?) (2)0003H002AH单元: 均分为五段,用作5个中断服务程序的入口。中断矢量地址表如表2-3所示。,表2-3 中断矢量地址表,什么是入口地址?,2 数据存储器 一般将随机存储器(RAM)用做数据存储器。可寻址空间为64KB。MCS-51数据存储器可分为片内和片外两部分。片内、片外独立编址。,片外RAM:用指令MOVX访问。 最大范围:0000HFFFFH,64KB; 片内RAM:用指令MOV访问。 最大范围:00HFFH,256B。又分为两部分:低128B(007FH)为真正的RAM区,高128B(80FFH)为特殊功能寄存器(SFR)区。,1) 低128字节RAM (1)工作寄存器区(00H1FH) 89C51的32个工作寄存器与RAM安排在同一个队列空间里,统一编址并使用同样的寻址方式(直接寻址和间接寻址)。 00H1FH地址安排为4组工作寄存器区,每组有8个工作寄存器(R0R7),共占32个单元。通过对程序状态字PSW中RS1、RS0的设置,每组寄存器均可选作CPU的当前工作寄存器组。若程序中并不需要4组,那么其余可用作一般RAM单元。CPU复位后,选中第0组寄存器为当前的工作寄存器。 (2)位寻址区(20H2FH) 这16个单元具有双重功能,它们既可以像普通RAM单元一样按字节存取,也可以对每个RAM单元中的任何一位单独存取,即位寻址。 20H2FH用作位寻址时,每位都分配了一个特定地址,即00H7FH,这些地址称为位地址。 怎么区分位地址和字节地址?,位地址的三种表示方法 直接使用位地址,如3DH; 采用第几字节第几位的表示方法,如2FH.7 ; 经伪指令定义过的字符名称。如: A1 BIT 07H ; BIT是位地址赋值伪指令。 (3)通用RAM区(30H7FH) 通用RAM区域共有80个单元,用于存放用户数据或做作堆栈用。MCS-51对这个区域中每个单元按字节存取。 在实际应用中,常需在RAM区设置堆栈,堆栈一般设置在30H7FH的范围内。在系统初始化时使用一条MOV指令就可修改SP的初始值。,低128字节RAM区,89C51片内高128字节RAM中,有21个特殊功能寄存器(SFR),它们离散地分布在80HFFH的RAM空间中。访问特殊功能寄存器只允许使用直接寻址方式。,2) 高128字节RAM特殊功能寄存器(SFR),堆栈指针SP 堆栈区域是89C51在片内RAM中专门开辟出来一个区域,数据的存取是以“后进先出”的结构方式处理的,好像冲锋枪压入子弹。这种数据结构方式对于处理中断,调用子程序非常方便。 堆栈指针SP为8位特殊功能寄存器,能自动加1或减1,专门用来存放堆栈的栈顶地址。SP的内容可指向89C51片内00H7FH RAM的任何单元。系统复位后,SP初始化为07H,即指向07H的RAM单元。 堆栈的操作有两种: 一种叫数据压入(PUSH),另一种叫数据弹出(POP)。 89C51的堆栈指针SP是一个双向计数器。数据进栈时,SP内容自动增值,数据出栈时自动减值。,右图中,假若有8个RAM单元,每个单元都在其右面编有地址,栈顶由堆栈指针SP自动管理。每次进行数据压入或弹出操作以后,堆栈指针便自动调整以保持指示堆栈顶部的位置。,数据指针DPTR(83H,82H): DPTR是一个16位的特殊功能寄存器,其高位字节寄存器用DPH表示(地址83H),低位字节寄存器用DPL表示(地址82H)。DPTR既可以作为一个16位寄存器来处理,也可以作为两个独立的8位寄存器DPH和DPL使用。 DPTR主要用于存放16位地址,以便对64KB片外RAM作间接寻址。 例如: MOV DPTR, #107FH ;将RAM地址107FH传送到DPTR寄存器 MOVX DPTR, A ;将A的内容传送到DPTR内容指定的外部RAM中 I/O 端口P0P3(80H,90H,A0H,B0H): P0P3为4个8位特殊功能寄存器,分别是4个并行I/O端口的锁存器。它们都有字节地址,每一个锁存器还有位地址,每一条I/O线均可独立用作输入或输出。 用作输出时,可以锁存数据;用作输入时,数据可以缓冲。,2.2 89C51的引脚功能,89C51单片机引脚图,2.2 89C51的引脚及其功能,89C51共有40条引脚,共分为电源引脚、时钟电路引脚、控制信号引脚和I/O端口引脚。 1. 电源引脚: Vcc和Vss Vcc(40脚):电源端,为+5V。 Vss(20脚):接地端。 2.时钟电路引脚: XTAL1和XTAL2 XTAL2(18脚):接外部晶体和微调电容的一端;在89C51 片内它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚悬空。89C51/8031正常工作时,该引脚应有脉冲信号输出。 XTAL1(19脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反向放大器的输入端,在采用外部时钟时,该引脚输入外部时钟脉冲。,2.2 89C51的引脚及其功能,3. 控制信号引脚:RST、ALE/PROG、PSEN和EA/Vpp RST/VPD(9脚): RST:复位信号输入端,高电平有效。当此输入端保持两个机器周期的高电平时,就可以完成复位操作。 VPD :RST引脚的第二功能,备用电源输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将+5V电源自动接入该引脚,为RAM提供备用电源,以保证RAM中的信息不丢失,使得复位后能继续正常运行。,ALE/PROG(30脚):地址锁存允许/编程线 ALE:地址锁存允许信号端。正常工作时,该引脚输出频率为fOSC/6的脉冲序列。CPU访问片外存储器时,该引脚输出信号作为锁存低8位地址的控制信号。它的负载能力为8个LS型TTL负载。 PROG:对片内带有4KB EPROM的8751,在编程期间,用于输入编程脉冲。 PSEN(29脚):片外ROM选通线 外部程序存储器读允许信号输出端。 在执行访问片外ROM的指令MOVC时,自动在该引脚产生一个负脉冲作为读片外ROM的选通信号,接片外ROM 的OE端。其他情况下,PSEN引脚均为高电平封锁状态。 它的负载能力为8个LS型TTL负载。,EA/Vpp(31脚):允许访问片外存储器/编程电源引脚 EA: 片外ROM地址允许输入端。 当该引脚接高电平时,CPU访问片内EPROM/ROM并执行片内程序存储器中的指令,但当PC值超过0FFFH(片内ROM为4KB)时,将自动转向执行片外ROM中的程序。 当该引脚接低电平时,CPU只访问片外EPROM/ROM并执行外部程序存储器中的程序。 Vpp:对8751片内EPROM固化编程时,编程电压输入端(12-21V)。,4.端口引脚 89C51有4组I/O端口,分别命名为P0、P1、P2、P3口。每个端口都是8位准双向口,共占32根引脚。 每一条I/O线都能独立地用作输入或输出。当I/O口作为输入时,应先向此端口锁存器写入全1, 此时该端口引脚浮空,可作高阻抗输入。 每个端口都包括一个锁存器(即特殊功能寄存器P0P3),一个输出驱动器和输入缓冲器,作输出时数据可以锁存,作输入时数据可以缓冲。,P0P3端口功能概述,P0口: 漏极开路的8位准双向I/O口,每位能驱动8个LS型TTL负载。 (其中“L”表示低功耗,“S”表示肖特基技术) P0口可作为一个数据输入/输出口; 在CPU访问片外存储器时,P0口为分时复用的低8位地址总线和8位数据总线。 P2口: 带内部上拉电阻的8位准双向I/O端口,每位能驱动4个LS型TTL负载。在CPU访问片外存储器时,它输出高8位地址。,P0P3端口功能概述,P1口: 带内部上拉电阻的8位准双向I/O端口,每位能驱动4个LS型TTL负载。 P3口: 带内部上拉电阻的8位准双向I/O端口,每位能驱动4个LS型TTL负载。P3口除作为一般I/O口外,每个引脚都有第二功能。,端口的负载能力和接口要求,1、P0口: 当把它用作通用I/O口使用时,用其输出去驱动NMOS输入时需外接上拉电阻。用作输入时,应先向口锁存器(80H)写1。 把它当作地址/数据总线时(8031情况),则无需外接上拉电阻。用作数据输入时,也无需先写“1”。P0口的每一位输出可驱动8个LS型TTL负载。 2、P1-P3口 每一位输出可驱动4个LS型TTL负载。 89C51单片机(HMOS)的P1-P3口无需外接上拉电阻。 80C51单片机(CHMOS),作输出口时应在端口与晶体管基极间串联一个电阻。 P1P3口也都是准双向口。作为输入时,必须先对相应端口锁存器写1。,以P2口为例剖析I/O的内部结构,在输入方面,P2端口和其他端口一样,有读引脚和读锁存器之分(*)。 要正确地从引脚读入外部信息,必须先关闭场效应管,以便由外部输入的信息确定引脚的状态,因此在做引脚读入前,必须先对该端口写入1。 MUX为切换开关,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相,输出在端口引脚线上。 当切换开关向上接通时,输出的一位地址信号经反相器和场效应管反相,输出在端口引脚线上。由于P2口输出高8位地址,无须分时复用,因此无须锁存。,2.3 CPU时序,1. 片内时钟信号的产生 89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。电容器C1和C2通常取30 pF左右,可稳定频率并对振荡频率有微调作用。振荡脉冲频率范围为fOSC=024 MHz。 晶体振荡器的频率为fOSC,振荡信号从XTAL2端输入到片内的时钟发生器上。,89C51的片内振荡器及时钟发生器,1)节拍与状态周期 时钟发生器是一个2分频的触发器电路,它将振荡器的信号频率fOSC除以2,向CPU提供两相时钟信号P1和P2。时钟信号的周期称为机器状态周期S(STATE),是振荡周期的2倍。 每个时钟周期(以后常称状态S)有两个节拍(相)P1和P2,在每个时钟周期(即机器状态周期S)的前半周期,P1信号有效,在每个时钟周期的后半周期,P2信号有效。 CPU就以两相时钟P1和P2为基本节拍指挥89C51单片机各个部件协调地工作。,2)机器周期和指令周期 (1)机器周期 一个机器周期是指CPU访问存储器一次所需的时间。例如,取指令、读存储器、写存储器。 一个机器周期包括12个振荡周期,分为6个S状态:S1S6。 每个状态又分为两拍,称为P1和P2。 因此,一个机器周期中的12个振荡周期表示为S1P1,S1P2,S2P1,S6P1,S6P2。 若采用6MHz晶体振荡器,则每个机器周期为2s(微秒)。,(2)指令周期 指令周期:执行一条指令所需的时间。 每条指令由一个或若干个字节组成。有单字节指令,双字节指令,多字节指令等。字节数少则占存储器空间少。 每条指令的指令周期都由一个或几个机器周期组成。有单周期指令、双周期指令、和四周期指令。机器周期数少则执行速度快。,3)基本时序定时单位 振荡周期: 晶振的振荡周期,为最小的时序单位。 状态周期: 振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期。因此,一个状态周期包含2个振荡周期。 机器周期(MC): 1个机器周期由6个状态周期即12个振荡周期组成,是计算机执行一种基本操作的时间单位。 指令周期: 执行一条指令所需的时间。一个指令周期由14个机器周期组成,依据指令不同而不同。,2. CPU取指、执行指令周期时序 每条指令的执行都可以包括取指令和执行指令两个阶段。 在取指令阶段,CPU从内部或外部ROM中取出指令操作码及操作数,然后再执行这条指令。 单字节和双字节的指令都可能是单机器周期或双周期,而三字节指令都是双周期的,只有乘、除指令占四周期。因此,执行一条指令的时间(指令周期)分别是2s,4s和8s。,89C51单片机的取指/执行时序图,单周期指令的执行从S1P2开始,在S1P2期间读入操作码并把它锁存到指令寄存器中,而且在S4处仍有一次读操作,但这时读出的字节(下一条指令的操作码)是不予考虑的,而且程序计数器PC也不加1。双字节指令,则在同一机器周期的S4期间读出第2个字节。 对于单周期指令,在上述任何情况下,指令都在S6P2期间完成操作。 单字节双周期指令在两个机器周期内作4次读操作码的操作,但由于是单字节指令,后3次读操作是无效的。,访问外部存储器指令MOVX 执行访问外部存储器指令MOVX时,首先从程序存储器中取出指令,然后从外部数据存储器中取出数据,因此该指令执行时序图与前三类指令不同。由于MOVX是单字节双周期指令,所以在取指令阶段(即第一个机器周期的S1P1到S4P2)是读1丢1,而在执行指令读数据阶段(即第一个机器周期的S5到第二个机器周期的S3)所完成的操作如下: (1)先将外部数据存储单元的地址ADDR由DPTR从P0与P2口输出,即时序图中的S5P1到S6P2阶段。并在S4P2到S5P2阶段,发ALE信号将地址锁存。 (2)在第二个机器周期S1P2到S2P2内取消ALE与程序选通信号PSEN (即取消取指操作),使P0口专门用于传送数据。同时发读信号,通过P0口将外部数据存储单元中的数据传送到累加器A中。即:时序图的S6P2到S4P1阶段。 (3)由于锁存的地址为外部数据存储单元的地址,所以在第二个机器周期S4取消取指令的操作,即:不再发程序选通信号PSEN。 注:由于执行MOVX指令时,在第二个机器周期中要少发一次ALE信号,所以ALE的频率是不稳定的。,2.4 复位操作,单片机开机时都需要复位,以便CPU和其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。89C51的RST引脚是复位信号的输入端。复位信号是高电平有效,持续时间要有24个振荡周期以上。 单片机复位后,其片内各寄存器状态如下表所列。复位后,片内RAM中的内容不变,包括工作寄存器R0R7。,复位电路,上电复位电路通过外部复位电路的电容充电实现。 按键手动复位电路通过使复位端经电阻与VCC电源接通而实现。,(a)上电复位电路,(b)按键手动复位电路,各特殊功能寄存器的复位值,表中各符号意义如下: A=00H:表明累加器已被清0。 PSW=00H:表明选寄存器0组为工作寄存器组。 SP=07H:表明堆栈指针指向片内RAM 07H字节单元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论