1、1,第2章 80C51的结构和原理,教学目的,了解单片机的内部结构与主要型号。掌握单片机引脚信号功能定义。掌握单片机的存储器空间分配及各I/O口的特点。掌握单片机的复位电路、时钟电路及指令时序。,学习重点和难点,单片机的结构特点。存储器配置与空间的分布。程序状态寄存器(PSW)。单片机的指令时序。,2,第2章 80C51的结构和原理,2.7 80C51的并行口结构与操作,2.1 80C51系列概述,2.2 80C51的基本结构及内部结构,2.3 80C51典型产品资源配置与引脚封装,2.4 80C51的时钟与时序,2.6 80C51的存储器组织,2.5 80C51的复位,3,2.1 80C51
2、系列概述,2.1.1 MCS-51系列 (1)MCS-51是Intel公司生产的一个单片机系列名称。,(2)该系列生产工艺有两种:,型号中凡带有字母“C”的即为CHMOS芯片,HMOS工艺(高密度短沟道MOS工艺)。H:高速度和高密度 ;与TTL电平兼容 CHMOS工艺(互补金属氧化物的HMOS工艺)。C:低功耗;CHMOS与TTL和COMS电平都兼容,80C51和MCS-51的关系8051是MCS-51系列单片机的典型品种。以8051为基核开发出的CHMOS工艺单片机产品统称为80C51。,8051的功耗为630mW,而80C51的功耗只有120mW。,4,(3)在功能上,该系列单片机有基本
3、型和增强型两大类:,基本型:1,增强型:2,80C51有4K字节的掩膜ROM;87C51有4K字节的EPROM ;80C31在芯片内无程序存储器。,(4)在片内程序存储器的配置上,该系列单片机 有三种形式,即掩膜ROM、EPROM和ROMLess(无片内程序存储器)。如:,5,2.1.2 80C51系列,以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。, Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; ATMEL的:89C51、89C52、89C2051等;,6,2.2 80C51的基本结构及内部结构,2.2.1 80C51的基本结
4、构 框图,7,8051单片机的结构框图如图所示,可以看出,在一块芯片上集成了一个微型计算机的主要部件,它包括以下几部分:1个8位微处理器(CPU)。1个时钟电路。4KB程序存储器。256B数据存储器。2个16位定时/计数器。64KB扩展总线控制电路。4个8位并行I/O接口P0P3。1个全双工串行I/O接口。5个中断源,其中包括2个优先级嵌套中断。,8,2.2.2 80C51的内部结构,9,一、80C51微处理器(CPU),二、80C51片内存储器(ROM、RAM),三、80C51的I/O口及功能单元,2.2.2 80C51的内部结构,四、80C51特殊功能寄存器(SFR),10,一、80C51
5、微处理器(CPU),CPU即中央处理器,是单片机的核心部件,是计算机的控制指挥中心。由运算器和控制器两部分组成。 运算器电路以算术逻辑单元(ALU,Arithmetic Logic Unit)为核心,由暂存器1、暂存器2、累加器(A,Accumulator)、寄存器B、程序状态寄存器(PSW,Program Status Word)及布尔处理机共同组成。 它的主要任务是完成算术运算、逻辑运算、位运算和数据传送等操作,运算结果的状态由程序状态寄存器(PSW)保存。 控制器电路包括程序计数器(PC)、PC增1寄存器、指令寄存器(IR)、指令译码器(ID)、数据指针(DPTR)、堆栈指针(SP)、缓
6、冲器及定时控制电路等。 控制器电路完成指挥控制工作,协调单片机各部分正常工作。,11,运算器,CPU,算术/逻辑部件ALU(Arithmetic Logic Unit),累加器ACC (Accumulator),程序状态字寄存器PSW(Program Status Word),暂存寄存器,寄存器B,控制器,堆栈指针SP数据指针DPTR,程序计数器PC,指令寄存器IR,指令译码器ID,12,二、80C51的片内存储器,80C51单片机与一般微机的存储器配置方式很不相同。 一般微机通常只有一个逻辑空间,可以随意安排数据或程序。访问存储器时,同一地址对应唯一的存储单元,可以是ROM也可以是 RAM,
7、并用同类访问指令。 而MCS-51则不同:,80C51在物理结构上设计成程序存储器与数据存储器独立分开的哈佛结构。在芯片内部有:程序存储器4KB(ROM 0000H0FFFH);数据存储器128B(RAM 00H7FH);21字节的特殊功能寄存器(SFR);在芯片外还可以扩展ROM、RAM最多可达到64KB。,13,三、80C51的I/O口及功能单元,四个8位的并行口,即P0P3。它们均为双向口,既可作为输入,又可作为输出。每个口各有8条I/O线。,有一个全双工的串行口(利用P3口的两个引脚P3.0和P3.1);,有2个16位的定时/计数器 ;,有1套完善的中断系统。,14,四、80C51特殊
8、功能寄存器(SFR),21个特殊功能寄存器单元,地址范围是只用到了80HFFH中的21个字节单元,且这些单元是离散分布的。,15,2.3 80C51典型产品资源配置与引脚,2.3.1 80C51典型产品资源配置,16,无ROM(即ROMLess)型,应用时要在片外扩展程序存储器;,掩膜ROM(即MaskROM)型,用户程序由芯片生产厂写入;, EPROM型,用户程序通过写入装置写入,通过紫外线照射擦除;, FlashROM型,用户程序可以电写入或擦除(当前常用方式)。,还有OTPROM型(一次性编程写入ROM) 产品,具有较高的环境适应性和可靠性。,17,2.3.2 80C51的引脚封装,总线
9、型,非总线型,18,8051的40个引脚可分为:电源引脚2根时钟引脚2根控制引脚4根I/O引脚32根由于8051单片机是高性能的单片机,同时受到引脚数目的限制,所以有部分引脚具有第二功能。,19,8051引脚的功能描述(一),电源引脚(2根) VCC(40脚):电源端,接+5V电源。VSS(20脚):接地端。时钟引脚(2根) XTAL1(19脚):接外部晶振和微调电容的一端。采用外部时钟电路时,对HMOS型工艺的单片机,此引脚应接地;对CHMOS型而言,此引脚应接外部时钟的输入端。XTAL2(18脚):接外部晶振和微调电容的另一端。使用外部时钟时,对HMOS型工艺的单片机,此引脚应接外部时钟的
10、输入端;对CHMOS型而言,此引脚悬空。,20,8051引脚的功能描述 (二),控制引脚(4根) RST/VPD(9脚):复位信号/备用电源输入引脚。 当RST引脚保持两个机器周期的高电平后,就可以使8051完成复位操作。该引脚的第二功能是VPD,即备用电源的输入端,具有掉电保护功能。若在该引脚接+5V备用电源,在使用中若主电源VCC掉电,可保护片内RAM中的信息不丢失。 ALE/PROG (30脚):地址锁存允许信号输出/编程脉冲输入引脚。当CPU访问片外存储器时,ALE输出信号控制锁存P0口输出的低8位地址,从而实现P0口数据与低位地址的分时复用。当8051上电正常工作后,自动在ALE端输
11、出频率为fosc/6的脉冲序列(fosc代表振荡器的频率)。 该引脚的第二功能PROG是对8751内部4KB EPROM编程写入时,作为编程脉冲的输入端,21,EA/VPP(31脚):外部程序存储器地址允许输入端/编程电压输入端。 当EA接高电平时,CPU执行片内ROM指令,但当PC值超过0FFFH时,将自动转去执行片外ROM指令;当EA接低电平时,CPU只执行片外ROM指令。对于8031,由于其无片内ROM,故其EA必须接低电平。 该引脚的第二功能VPP是对8751片内EPROM编程写入时,作为21V编程电压的输入端。PSEN(29脚):片外ROM读选通信号端。 在读片外ROM时,PSEN有
12、效,为低电平,以实现对片外ROM的读操作。,控制引脚(4根),22,8051引脚的功能描述 (三),I/O引脚(48=32根) P0.0P0.7(3932脚):P0口的8位双向I/O口线。 P0口即可作地址/数据总线使用,又可作通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。P1.0P1.7(18脚):P1口的8位准双向I/O口线。 P1口作为通用的I/O口使用。P2.0P2.7(2128脚):P2口的8位准双向I/O口线。 P2口即可作为通用的I/O口使用,也可作为片外存储器的高8位地址总线,与P0口配合,组
13、成16位片外存储器单元地址。P3.0P3.7(1017脚):P3口的8位准双向I/O口线。 P3口除了作为通用的I/O口使用之外,每个引脚还具有第二功能。,23,2.4 80C51的时钟与时序,一、80C51的时钟产生方式,内部时钟 外部时钟,时钟:用来为单片机芯片内部各种微操作提供时间基准时序:微操作的时间次序,24,在8051单片机内部有一个高增益的反相放大器,用于构成振荡器,反相放大器的输入端为XTAL1,输出端为XTAL2。内部振荡方式是在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个电容构成稳定的自激振荡电路。电容C1和C2通常取30pF,对振荡频率有微调作用。晶振频率范围是
14、1.2MHz12MHz。,1. 内部振荡方式,25,2. 外部时钟方式,外部时钟方式是把外部已有的时钟信号引入到单片机内。8051:外部时钟由XTAL2输入,直接送入内部时钟电路,XTAL1接地;80C51:外部时钟由XTAL1输入,XTAL2悬空。外部时钟信号为高电平持续时间要大于20ns,且频率低于12MHz的方波。,26,二、80C51的时钟信号,一个机器周期包含12个晶荡周期或6个时钟周期,指令的执行时间称作指令周期 (单、双、四周期),27,3.机器周期:一个机器周期包括12个振荡周期。 4.指令周期:执行一条指令的时间,14个机器周期。,1.振荡周期:振荡源周期。2.状态周期:又叫
15、时钟周期,振荡周期2分频,P1、 P2节拍。,28,典型指令的取指、执行时序,振荡周期为单片机提供定时信号的振荡源的周期或外部输入时钟信号的周期时钟周期 (或状态周期S)是振荡周期的两倍,它分为P1节拍和P2节拍。一条指令的执行过程分作几个基本操作,完成一个基本操作所需的时间称作机器周期。执行一条指令所需的时间称为指令周期。,29,2.5 80C51的复位,复位是单片机的初始化操作。复位功能是把PC初始化为0000H,使CPU从0000H单元开始执行程序;复位操作同时还对其他一些寄存器有影响,但内部RAM的数据是不变的。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状
16、态时,为摆脱困境,也需要按复位键重新启动。,2.5.1 复位功能,30,单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。 常见的复位操作有上电自动复位和按键手动复位两种方式 。上电自动复位是通过外部复位电路的电容充电来实现的。按键手动复位是通过复位端经电阻与电源VCC接通而实现的,它兼备上电复位功能。 (a) 上电自动复位 (b) 按键手动复位,2.5.2 复位电路,31,PC=0000H,所以程序从0000H地址单元开始执行;启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM的内容 ;,特殊功能寄存器复位后的状态是确定的 :P0P3=FFH,各口可用于输
17、出,也可用于输入;SP=07H,第一个入栈内容将写入08H单元;IP、IE和PCON的有效位为0,各中断源处于低优先级且均被关断、串行通讯的波特率不加倍;PSW=00H,当前工作寄存器为0组。,2.5.3 复位状态,32,2.6 80C51的存储器组织, RAM,在关闭电源时,其所存储的信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈。, ROM,断电后,ROM中的信息保留不变。用来存放固定的程序或数据,如系统监控程序、常数表格等。,33,2.6.1 80C51的程序存储器ROM,程序存储器ROM用来存放程序、常数或表格等。,80C51:4KB的掩膜ROM,87C51:4K
18、B的EPROM,80C31:没有ROM(使用时必须使EA接低电平)。 PC是16位的计数器,所以能寻址64KB的ROM。,实例观察,34,2.6.2 80C51的数据存储器配置,片内,片外,0000H007FH重叠区域访问需要采用不同的寻址方式片外RAM不能进行堆栈操作,35,数据存储器RAM主要用来存放运算的中间结果和数据等。在80C51中,其存储空间分布如下:片内RAM为128B存储单元,地址范围为00H7FH。片外RAM最多可扩至64KB存储单元,地址范围为0000HFFFFH。,36,一、工作寄存器区,通用RAM区 (80B),位地址区 (16B),寄存器区4组(32B),7FH,寄存
19、器3组寄存器2组寄存器1组寄存器0组,寄存器区4组(32B),.,由PSW中的2位RS1、RS0来决定选 哪一组为当前工作寄存器: RS1、RS0=00 选0组 RS1、RS0=01 选1组 RS1、RS0=10 选2组 RS1、RS0=11 选3组,00H,30H2FH20H1FH,.,37,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组寄存器2组寄存器1组寄存器0组,寄存器0组,寄存器区4组(32B),.,RS1、RS0=00,00H,30H2FH20H1FH,.,38,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组寄存器2组寄存器1组寄存器0组,寄
20、存器1组,寄存器区4组(32B),.,RS1、RS0=01,00H,30H2FH20H1FH,.,39,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组寄存器2组寄存器1组寄存器0组,寄存器2组,寄存器区4组(32B),.,RS1、RS0=10,00H,30H2FH20H1FH,.,40,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组寄存器2组寄存器1组寄存器0组,寄存器3组,寄存器区4组(32B),.,RS1、RS0=11,00H,30H2FH20H1FH,.,41,41,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组寄存器2组寄存器
21、1组寄存器0组,位地址区,.,00H,30H2FH20H1FH,.,二、位寻址区(20H2FH),42,通用RAM区 (80B),位地址区 (16B),00H,30H2FH20H1FH,7FH,寄存器3组寄存器2组寄存器1组寄存器0组,通用RAM区,.,.,共80个字节,作为一般的数据缓冲区并可设置堆栈区,栈顶的位置由SP寄存器指示。复位时SP的初值为07H,在系统初始化时可以重新设置。,三、通用RAM区,实例观察,43,2.6.3 80C51的特殊功能寄存器,一、与运算器相关的寄存器(3个),二、指针类寄存器(3个),三、与口相关的寄存器(7个),四、与中断相关的寄存器(2个),五、与定时器
22、/计数器相关的寄存器(6个),44,A Register (Accumulator): 累加器,通常用A或ACC表示。可字节寻址(E0H), 也可位寻址(E0HE7H) 它是一个寄存器,而不是一个做加法的部件。 在运算器做运算时其中一个数一定是在ACC中。B Register:暂存寄存器。 暂存寄存器。在做乘、除法时放乘数或除数及结果。PSW (Program Status Word ): PSW是8位寄存器,用于作为程序运行状态的标志。这是一个很重要的部件,里面存放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。,一、与运算器相关的寄存器(3个),45,当CP
23、U进行各种逻辑操作或算术运算时,为反映操作或运算结果的状态,把相应的标志位置1或清0。这些标志的状态,可由专门的指令来测试,也可通过指令来读出。它为计算机确定程序的下一步进行方向提供依据。PSW寄存器中各位的名称、位置及各标志位的作用说明如下:,PSW位地址,PSW,46,CY:进位标志。 加减运算时,保存最高位进位、借位状态。 AC:半进位标志。 例:78H+97H 0111 1000 +1001 0111 1 0000 1111,PSW位地址,有进位CY=1,没有半进位AY=0,47,RS1、RS0:工作寄存器组选择位。 0 0 选择工作寄存器0组 0 1 选择工作寄存器1组 1 0 选择
24、工作寄存器2组 1 1 选择工作寄存器3组 P:奇偶校验位,它用来表示累加器A内容中二进制数位 “1”的个数的奇偶性。若为奇数,则P=1,否则为0。 例:某运算结果是78H(01111000),P=0。,48,F0:用户标志位。作为软件标志,由编程人员决定 何时使用。OV:溢出标志位。 有符号数运算时,如果发生溢出,OV置“1”, 否则清“0”。,PSW位地址,49,SP (Stack Pointer): 堆栈指针,8位寄存器,用来指定堆栈的栈顶位置,初值为07H。它是加1计数。堆栈操作遵循“后进先出”的原则入栈操作时:SP先加1,数据再压入SP指向的单元。出栈操作时: 先将SP指向的单元的数
25、据弹出,SP再减1,这时SP指向的单元是新的栈顶。80C51单片机的堆栈区是向地址增大的方向生成的。DPTR (Data Pointer)(分成DPH、DPL两个): 数据指针可以用它来访问外部数据存储器中的任一单元,也可以作为通用寄存器来用,由我们自已决定如何使用。,二、指针类寄存器(3个),50,P0、P1、P2、P3: 四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。SCON (Serial Control Register)SBUF (Serial Date Buffer) PCON (Power Control Register),三、与口相关的寄存器(7个),四、与中断
26、相关的寄存器(2个),IP (Interrupt Priority Register) IE (Interrupt Enable Register),51,TMOD (Timer/Counter Mode Register) 定时器工作模式寄存器。TCON (Timer/Counter Control Register) 定时器控制寄存器。TH0、TL0 、TH1、TL1:分别是T0、T1的记数初值寄存器。,五、与定时器/计数器相关的寄存器(6个),52,2.7 80C51的并行口结构与操作,8051单片机有4个8位并行I/O端口,称为P0、P1、P2和P3口,每个端口都各有8条I/O口线,每
27、条I/O口线都能独立地用作输入或输出。在无片外扩展存储器的系统中,这四个I/O口都可以作为通用I/O口使用。在有片外扩展存储器的系统中,P2口送出高8位地址,P0口分时送出低8位地址和8位数据。,53,2.6.1 P0口、P2口的结构,一、 P0口的结构,当不需要外部ROM和外部RAM时,P0、P2口做I/O口用;当需要外部ROM和外部RAM时,P0低8为地址、数据总线,P2高8位地址,54,二、 P2口的结构,图中的控制信号C决定转换开关MUX的位置:当C=0时,MUX拨向下方,P0口为通用I/O口;当控制信号C=1时,MUX拨向上方,P0口作为地址总线使用。在实际应用中,P2口通常作为高8
28、位地址总线使用。,55,2.6.2 P1口、P3口的结构,一、 P1口的结构,P1口是唯一的单功能口,仅能作为通用I/O口使用。由于在其输出端接有上拉电阻,故可以直接输出而无需外接上拉电阻。同P0口一样,当作输入口时,必须先向锁存器写“1”,使场效应管T截止。,56,二、 P3口的结构,P3口用作通用I/O口时,第二输出功能信号W=1,P3口的每一位都可定义为输入或输出,其工作原理同P1口类似。在真正的应用电路中,P3口的第二功能显得更为重要 。,57,P3口的第二功能,58,2.7.3 并行口的负载能力,P0、P1、P2、P3口的电平与CMOS和TTL电平兼容。,P0口的每一位口线可以驱动8
29、个LSTTL负载。在作为通用 I/O口时,由于输出驱动电路是开漏方式,由集电极开路(OC门)电路或漏极开路电路驱动时需外接上拉电阻;当作为地址/数据总线使用时,口线输出不是开漏的,无须外接上拉电阻。,P1、P2、P3口的每一位能驱动4个LSTTL负载。它们的输出驱动电路设有内部上拉电阻,所以可以方便地由集电极开路(OC门)电路或漏极开路电路所驱动,而无须外接上拉电阻。,由于单片机口线仅能提供几毫安的电流,当作为输出驱动一般的晶体管的基极时,应在口与晶体管的基极之间串接限流电阻。,59,P1口输出功能应用实例,【例1】 P1口做输出口,控制八只发光二极管循环点亮(P1口输出低电平时发光二极管被点
30、亮)。 解:由于发光二极管低电平点亮,所以,需要哪个发光二极管点亮,只需在相应的端口输出逻辑0即可。由于每个发光二极管点亮后要持续一段时间才熄灭,再使下个发光二极管点亮,因此需要编写延时子程序,供主程序反复调用。 本例中,延时子程序采用指令循环来实现。,60,61,P3口输入功能应用实例,【例2】 P3口的P3.0连接一个开关,作为输入端;P1口的P1.0P1.7连接八只发光二极管,作为输出端。要求用P3.0来控制P1输出的循环灯,即当P3.0输出高电平时,控制P1口的发光二极管左循环点亮;当P3.0输出低电平时,控制P1口的发光二极管右循环点亮(P1口输出低电平时发光二极管被点亮)。 解:在
31、主程序中要对P3.0的状态进行判断。 如果P3.0为高电平,则使用循环左移指令。 如果P3.0为低电平,则使用循环右移指令。 延时子程序同例1。,62,参考程序:,63,思考题与习题1、80C51在功能、工艺、程序存储器的配置上有哪些种类?2、80C51的存储器组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?3、80C51的P0P3口在结构上有何不同?在使用上有何特点?4、80C51晶振频率为12MHz,时钟周期、机器周期为多少?5、80C51复位后的状态如何?复位方法有几种?6、80C51的片内、片外存储器如何选择?7、80C51的PSW寄存器各位标志的意义如何?8、80C51的当前工作寄存器组如何选择?9、80C51的控制总线信号有哪些?各信号的作用如何?10、80C51的程序存储器低端的几个特殊单元的用途如何?,