第2章 MCS--51系列单片机的结构及原理 ● 教学目标: 介绍MCS—51系列单片机的内部结构与外部引脚功能 介绍MCS—51系列单片机输入输出端口的结构与功能 介绍MCS—51系列单片机的存储器组织 介绍MCS—51系列单片机的CPU时序 ● 学习要求: 掌握MCS—51系列单片机的内部结构与外部引脚功能 掌握MCS—51系列单片机存储器的构成与编址方法 掌握输入输出端口的功能,了解输入输出端口的结构 掌握振荡电路与复位电路的构成,了解单片机的CPU时序
2.1 MCS--51系列单片机 的结构与引脚功能 MCS--51系列单片机是美国Intel公司在1980年推出的8位单片 微型计算机 ,包含51和52两个子系列。 51子系列的典型产品有8031,8051和8751三种机型 52子系列包括8032,8052二种主要机型 MCS--51系列单片机的结构框图见图2-1。
(3)128个字节的片内数据存储器(片内RAM); (4)21个专用寄存器; (5)4KB的片内程序存储器(8031无); MCS--51系列单片机的结构框图见图2-1。 51子系列的配置如下: (1)8位CPU; (2)振荡频率1.2~12MHZ; (3)128个字节的片内数据存储器(片内RAM); (4)21个专用寄存器; (5)4KB的片内程序存储器(8031无); (6)8位并行I/O口P0,P1,P2,P3; (7)一个全双工串行I/O口; (8)2个16位定时器/计数器; (9)5个中断源,分为2个优先级; 2
图2-1 MCS---51系列单片机的结构框图
图2-1 MCS—51系列单片机的引脚功能
P2.0~P2.7:P2口的8个引脚,P2口也是一个带内部上拉电阻的双向I/O口,在访问片外存储器或扩展I/O接口时,还用于提供高8位地址。 主电源引脚 Vss、Vcc 外接晶振引脚 XTAL1、XTAL2 输入/输出引脚 P0、P1、P2、P3 P0.0~P0.7:P0口的8个引脚,P0口是8位漏极开路型双向I/0端口,在接有片外存储器或I/0扩展接口时,P0.0~P0.7分时复用,作低8位地址总线与双向8位数据总线 P1.0~P1.7:P1口的8个引脚,P1口是一个带内部上拉电阻的8位双向I/O口,对于52子系列,P1.0还可用于定时器/计数器2的计数脉冲输入端T2,P1.1还可作定时器/计数器2的外部控制端T2EX。 P2.0~P2.7:P2口的8个引脚,P2口也是一个带内部上拉电阻的双向I/O口,在访问片外存储器或扩展I/O接口时,还用于提供高8位地址。 P3.0~P3.7:P3口的8个引脚,P3口也是一个带上拉电阻的I/O口,除可以作双向的输入输出口外,还具有第2功能,见表2.1
表2-1 P3口第二功能表 第二功能 引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD(串行口输入) TXD(串行口输出) INT0(外部中断0输入) INT1(外部中断1输入) T0(定时器0的外部输入) T1(定时器1的外部输入) WR (片外数据存储器写控制信号) RD (片外数据存储器读控制信号)
控制线(4条): ALE/PROG:双功能引脚。由于P0口的8个引脚是低8位地址总线与数据总线分时复用,因此必须将P0口输出的低8位地址进行锁存。在访问片外存储器时,每机器周期该信号出现2次。其下降沿用于控制锁存P0口输出的低8 位地址。即使不访问片外存储器,该引脚上仍出现上述频率的周期性信号,因此也可作为对外输出的时钟脉冲,频率为振荡器频率的1/6,必须注意的是:在访问片内外存储器时,ALE脉冲会跳空1个。对片内含有EPROM的机型,此引脚在编程时可作为编程脉冲PROG的输入端。 PSEN:片外程序存储器读选通信号输出端,在CPU从片外程序存储器取指期间,此信号每个机器周期两次有效,以通过P0口读入指令,在访问片外数据存储器时,该信号不出现。 (
EA/Vpp:双功能引脚,为片外程序存储器选用端。当该引脚信号有效时,选择片外程序存储器,即EA/Vpp=1时,访问片内程序存储器。 对片内含有EPROM的机型,此引脚在编程期间用于施加+21v的编程电压。 RST/VPO:双功能引脚,在单片机工作期间,当此引脚上出现连接2个机器周期的高电平时可实现复位操作,详见2.4节。 在Vcc掉电期间,若该引脚接备用电源(+5v),可向片内RAM供电,以保存片内RAM中的信息。
2.2 MCS—51系列单片机的微处理器与CPU时序 运算器由算逻运算单元ALU、累加器A、B寄存器、暂存器1、暂存器2、及程序状态字PSW构成。程序状态字PSW是1个8位的专用寄存器,用于存放程序运行中的各种状态信息,可进行位寻址, PSW的各位定义见图2—3。 D7 D6 D5 D4 D3 D2 D1 D0 图2-1的虚框部分为微处理器,又分为控制器、运算器。控制器由指令寄存器、指令译码器、定时控制部分组成,可根据不同的指令产生相应的控制信号,使各部分协调工作,完成指令所规定的功能。 图2—3 程序状态字各位的含义 C AC F0 RS1 RS0 OV F1 P
(1)进位标志C(PSW.7);很多算术逻辑运算指令执行 后都会影响进位标志C。例如加减运算,若运算结果有进位或借位,则C=1,若无,则C=0。可用专门的指令或硬件将C置位或清零,在进行位操作时,C又起着位累加器的作用,类似于累加器A。 (2)辅助进位标志AC(PSW.6):做加减运算时,若低半字节有进位(借位),则AC=1,否则AC=0,辅助进位标志主要用于BCD运算调整时。 (3)软件标志FO(PSW.5):这是可由用户定义的一个状态标志,可由用户置位或复位。F1的定义与F0相同。
(4)工作寄存器组选择位RS1、RS0(PSW. 4,PSW. 3): RS1、RS0与工作寄存器组的对应关系如下: RS1. RS0 (4)工作寄存器组选择位RS1、RS0(PSW.4,PSW.3): RS1、RS0与工作寄存器组的对应关系如下: RS1 RS0 工作寄存器组 片内RAM地址 0 0 第0组 00H~07H 0 1 第1组 08H~0FH 1 0 第2组 10H~17H 1 1 第3组 18H~1FH 单片机上电复位后,RS1RS0=00,此时第0组的8个工作寄存器为当前工作寄存器组。
(6)奇偶标志P(PSW.0):P反映执行指令后累加器A中1的个数的奇偶,若A中1的个数为奇数,则P=1,若 A中1的个数为偶数,则P=0。 (5)溢出标志OV(PSW.2):当运算结果超出机器所能表示的范围时称溢出。OV是带符号数运算的溢出标志,如发生溢出,则OV=1;否则OV=0。 (6)奇偶标志P(PSW.0):P反映执行指令后累加器A中1的个数的奇偶,若A中1的个数为奇数,则P=1,若 A中1的个数为偶数,则P=0。 程序状态字可反映运算结果的状态,下面以加法指令为例进行说明。 例:分析执行下列指令序列后,A、C、AC、OV、P的内容是什么? MOV A,#79H ADD A,#58H 该指令序列的功能是将79H+58H→A。计算过程如下: (79H) 01111001 +(58H) 01011000 ———————————— (D1H) 11010001 指令执行后,A=D1H最高位无进位,故C=0;低半字节有进位,AC=1;OV=0 1=1,发生溢出;A中1的个数为偶数,故P=0。
CPU时序 一.振荡器 CPU执行指令的一系列动作是在时序电路的控制下一拍一拍进行的。其节拍信号由振荡器产生,MCS--51系列单片机的内部有一个高增益的反相放大器。外接晶体后可构成自激振荡器产生节拍信号,接法见图2-1,也可使用片外振荡器,采用不同工艺制造的单片机芯片接法不同: 。 芯片状态 接法 XTAL1 XTAL2 HMOS型 接地 接片外振荡脉冲输入端(带上拉电阻) CHMOS型 悬浮
二、时钟周期,机器周期、指令周期 三、CPU时序 振荡器输出的振荡脉冲经2分频后作为内部节拍信号,作单片机内部各部件协调工作的控制信号,其周期称为时钟周期。 计算机一条指令的执行分几个阶段,每一阶段完成一项规定的操作,完成某一规定操作所需的时间称为一个机器周期。对MCS—51系列单片机,6个时钟周期构成一个机器周期。 CPU执行一条指令所需的时间为指令周期。指令周期以机器周期为单位,MCS—51系列单片机的指令多为单周期、双周期指令,只有乘除指令为4周期指令,若用12MHZ晶振,则单周期指令、双周期指令的执行时间分别为1μs和2μs,而乘除指令则需4μs 三、CPU时序 MCS—51系列单片机的一个机器周期包含6个时钟周期。我们用S1、S2、……、S6表示,每个时钟周期的2个振荡节拍用P1、P2表示,则一个机器周期包括12个振荡周期,不同周期、不同字节数的指令时序不同。
图2-3 CPU时序图
2.3 8051 存储器配置 MCS—51系列单片机内部一般既有只读存储ROM,又有随机存储器RAM,片内存储器的类型及容量见表2—3. 2.3 8051 存储器配置 MCS—51系列单片机内部一般既有只读存储ROM,又有随机存储器RAM,片内存储器的类型及容量见表2—3. 当片内存储器容量不够时,可在片外扩展,加用片外程序存储器与片外数据存储器。从结构上讲共有四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器,见图2-5。
图2-4 MCS—51系列单片机存储器配置图
程序存储器 EA=0,此时将不访问片内程序存储器而直接访问片外程序存储器。 程序存储器存放程序及各种表格、常数,其寻址范围为64KB,编址范围为0000H至FFFFH。对于片内无程序存储器的机型(8031、8032),其程序存储器均在片外扩展,对于片内有程序存储器的机型(8051、8052、8751),也可在需要时扩展片外程序存储器。在既有片内又有片外程序存储器时,通常编址时先片内,后片外,片内片外连续不重叠。 EA有两种接法: EA=1,此时复位后先执行片内程序存储器的程序;当PC中的内容超过片内程序存储器最后的一个单元的地址时,将自动转去执行片外程序存储器的程序。 EA=0,此时将不访问片内程序存储器而直接访问片外程序存储器。
程序存储器中有特殊用途的7个单元: 0000H单元:MCS—51系列单片机复位后PC=0000H,即系统复位后从0000H单元开始执行程序, 0003H 外部中断0 中断服务程序入口地址 000BH 定时器/计数器1溢出中断入口地址 0013H 外部中断1入口地址 001BH 定时器/计数器1溢出中断入口地址 0023H 串行口中断入口地址 002BH 定时器/计数器2溢出或T2EX端负跳变(仅8032、 8052 用)中断入口地址 注意:以上7个单元相隔很近,通常要执行的程序并不在此,单元内通常是一条绝对转移指令,转到程序真正的起始地址去执行程序.。
数据存储器 MCS—51系列单片机的片内数据存储器分为片内RAM块与特殊功能寄存器(SFR)块,对于51子系列,片内RAM块的地址从00H~7FH,占128个字节,SFR块从80H~FFH,也为128字节。对于52子系列,前者编址从00H~FFH,占256个字节,后者编址为80H~FFH,占128字节。片内RAM的高128个字节的地址与SFR块重叠,当片内数据存储器容量不够时可扩展片外数据存储器。片外数据存储器用R0、R1间址寻址时,寻址范围为256个字节,用数据指针寄存器DPTR时寻址范围最大为64KB。在编址时,片外数据存储器的地址可与片内数据存储器的地址重叠 ,事实上,数据存储器与程序存储器的地址也是重叠的。 规定:片内RAM的高128个字节用寄存器间址寻址,而SFR块用直接寻址,访问片内数据存储器用MOV指令,访问片外数据存储器用MOVX指令,而访问程序存储器则用MOVC指令,
一、片内RAM块 51子系列片内RAM块可分工作寄存器存器区、位寻址区、数据缓冲区等三个区域,这三个区域统一编址,从00H~7FH,各区域有自己的特殊功能,也可统一调度使用。 注意:单片机上电复位后,SP=07H,即堆栈处于工作寄存器存器区,应给SP重新赋值。
二、特殊功能寄存器块SFR 特殊功能寄存器又称专用寄存器,与片内RAM统一编址(PC除外)用直接寻址方式寻址,其地址从80H~FFH,离散分布 .
注:表中带*的寄存器都与定时器/计数器2有关,只在52子系列芯片中存在
2.4 输入输出端口结构 MCS—51系列单片机芯片有4个8位的准双向输入输出端口,称为P0、P1、P2、P3口,见表2—5,我们可以看出P0-P3口均有位地址,因此4个口的32根输入/输出线每一条可作为独立的输入/输出线使用。51系列单片机的输入输出端口与片内RAM统一编址,采用相同的指令进行访问,P0~P3口采用直接寻址方式,其口地址依次为80H、90H、A0H、B0H。 各端口的结构见图2-5至图2-8
图2-5 P0口的1位结构
D P1.i Q CL Q 图2-6 P1口的1位结构 Vcc 读锁存器 2 内部上拉电阻 内部总线 锁存器 P1.i 引脚 写锁存器 V1 读引脚 图2-6 P1口的1位结构
图2-7 P2口的1位结构
图2-8 P3口的1位结构
各端口的功能 注意:由于V2截止,如果输入电路由集电极开路或漏极开路电路驱动,应外加提升电路。 P0口有两种功能:在扩展片外存储器时作地址/数据分时复用总线,在不进行扩展时作一般准双向输入/输出口使用 注意:由于V2截止,如果输入电路由集电极开路或漏极开路电路驱动,应外加提升电路。 P1口只有一种功能---通用准双向的输入/输出接口 P2口有2种用途:通用准双向I/O接口或当单片机扩展了片外存储器时作高8位地址总线 P3口除了作为通用准双向I/O使用外,还具有第2功能 (表2-1)
2.5 复位及复位电路 MCS--51系列单片列的RST引脚为复位引脚,只要在RST引脚上出现宽度在10ms以上的高电平,即可实现复位,复位通常有上电复位和操作复位两种方法。 复位是靠外部电路实现的。常用的一种上电与按钮复位电路见图。 复位后各专用存储器和程序计数器的状态见表2—2。 +5V R C1 C2 C3 · · · RST MCS-51 · ·
表2-2 复位后各专用存储器和程序计数器的状态 表2-2 复位后各专用存储器和程序计数器的状态 寄存器 复位状态 PC A B PSW SP DPTR P0~P3 IP IE TMOD 0000H OOH 00H 07H FFH XX000000B 0X000000B TCON T2CON TH0 TL0 TH1 TL1 SCON SBUF PCON XXH (0XXX0000B)
注意:单片机的各个功能模块由特殊寄存器控制,因此上述复位状态决定了单片机的初始状态: 、 1、PC=0000H,复位后从0000H单元开始执行程序。 2、PSW=00H,所以RS1RS0=00,复位后单片机当前工作寄存器组为第0组。 3、SP=07,复位后堆栈区从片内RAM08H单元开始。 4、复位后各定时器/计数器初值为0。 5、复位后中断禁止工作。 6、复位后全部中断设置在低优先级中断状态。 7、P0~P3口全1。
小 结 本章介绍MCS—51系列单片机的内部结构与外部引脚功能,主要讲述了MCS—51系列单片机的存储器系统与输入输出端口的结构。其中,中断系统和内部定时器/计数器将在第5 章和第6章中介绍,本章是全书的基础。 1、MCS—51系列单片机的存储器组织:MCS—51系列单片机的存储器分为四个物理空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。片内数据存储器又分为RAM区(工作寄存器区、位寻址区、用户RAM区)和专用寄存器区(SFR区)两个区域。不同的存储器与不同的存储器区域,在访问时的指令、寻址方式、控制信号上均有所不同,必须熟练掌握各区域的地址范围、控制与访问方法。 2、输入输出端口的结构与功能:输入输出端口归入SFR区进行编址,注意P0~P3端口在结构与功能上的区别,这在进行数据传送与片外存储器(接口)的扩展时尤其重要。 3、CPU时序:MCS—51系列单片机执行指令的指令周期是用时钟周期来描述的,分为单周期指令、双周期指令、四周期指令四种,在实时控制中,单片机的运行速度是一个重要的指标,决定系统是否能正确的发挥控制作用,要注意恰当的使用指令以节约时间与空间。
思考题与习题二 1 简述MCS—51系列单片机的内部结构并说明主要部分的功能。 2 简述MCS—51系列单片机控制引脚的功能。 6 什么是位地址?什么是字节地址?位地址30H在片内数据存储器的哪一个单元? 7 片内存储器中的7个特殊单元有何作用? 8 说明程序状态字PSW中常用状态位的定义。 9 什么叫当前工作寄存器组?MCS—51系列单片机如何选择当前寄存器组? 10 MCS—51系列单片机P0~P3的四个端口在结构有何异同?说明各端口的功能。 11 为什么P0~P3口称为“准双向”I/O口? 12 MCS—51系列单片机外接晶振是如何使用XTAL1、XTAL2引脚? 13 何谓时钟周期、机器周期、指令周期?MCS—51系列单片机的机器周期与振荡周期有什么关系?如采用12MHz晶振,机器周期与指令周期各为多少 ? 14 结合复位后专用寄存器的值分析MCS—51系列单片机的初始状态。