第二章 51单片机硬件结构
第二章 51单片机硬件结构
这一章节主要介绍经典8051微控制器的组成结构、功能特点以及引脚等功能。
1. 组成结构
1.1 8051微控制器
8051系列微控制器是美国Intel公司于八十年代推出的系列产品。包括8031、8051,8751,8032,8052,8752等,它们都是在同一基本构架上进行功能或资源的增、减或改变而来的,习惯上可统称MCS51微控制器、8051微控制器或51微控制器。
1.2 8051微控制器组成结构
典型8051微控制器采用的是CPU加上功能模块的传统微型计算机结构模式。CPU与各功能模块通过内部总线相连接,进行信息交互。
- 中央处理器CPU
- 只读存储器/程序存储器ROM
- 随机读取存储器RAM
- 并行I/0口
- 中断系统
- 定时器/计数器(每个单片机都必须要有)
- 串行口
- 特殊功能寄存器SSR(Special Function Register)
1.3 8051微控制器的内部结构
1.3.1 8051微控制器的内部结构
1.3.2 51单片机功能模块与特点
- 1个8位CPU:是微控制器的核心,包括运算器ALU和控制器CU两大部分,主要完成运算和控制功能。
- 片内8K Byte ROM:地址范围为0000H-1FFFH。(增强型8051MCU的内部ROM已达64KB,因此较少扩展)
- 片内256 Byte RAM:地址为00-FFH(较少扩展)
- 4个8位并行I/0口(P1、P2、P3、P4),共32条I/0口线(具有第二功能)
- 5个中断源,2个中断优先级
- 2个16位定时器/计数器 T0、T1,四种工作方式。
- 串行口:1个全双工的串行口,用于微控制器不具有串行接口的外设进行异步串行通信,也可以扩展I/O接口。
- 21个特殊功能寄存器SSR:用于管理、控制和监视内部功能部件的寄存器。分布在地址为80H~FFH的专用RAM区。
- 布尔处理器(位处理器):具有较强的位寻址、位处理能力。
- 时钟电路:产生微控制器工作所需要的时钟脉冲。(需要外接晶体振荡器和微调电容。)
- 指令系统:有5大功能,111条指令。为复杂指令系统(CISC)。
1.3.3 引脚与功能
51单片机40脚DIP封装形式
40条引脚可分为4组:
- 电源、地: 2条;
- 时钟电路: 2条;
- 控制线: 4条;
- I/O口线: 32条。
电源、地:
电源、地(VCC,GND): 2条
时钟电路:
- XTAL1(CRYSTAL 1):接外部晶振一端。是片内振荡电路反相放大器的输入端。
- XTAL2:接外部晶振另一端。是片内振荡电路反相放大器的输出端,从该引脚可输出频率为晶振频率的时钟信号。
XTAL1和XTAL2两个引脚除连接晶振外,还要连接两个起振电容。经典51晶振频率:1.2MHz-12MHz
控制引脚( ALE、PSEN、EA、RST ):
- ALE(Address Latch Enable,P30):地址锁存允许信号输出端。有效时输出一个高脉冲。在访问外部存储器时,用于锁存低8位地址,以实现P0口的8位数据线和低8位地址线的分时复用和隔离。(由于很少外扩,此控制引脚用的不多)。
- PSEN(Program Store Enable,P29):ROM选通信号输出端,低电平有效。 (由于很少外扩,此控制引脚用的不多)。
- EA(External Access Enable,P31):内部、外部ROM选择信号输入端,低电平有效。 (由于很少外扩,此控制引脚用的不多)。
- RST(Reset,P9)复位信号输入端,高电平有效。在此引脚施加两个机器周期的高电平,就可以对MCU进行复位。此引脚为低电平时,微控制器为工作状态。
I/O引脚(P0、P1、P2、P3):32条I/O口线
-
P0口(P0.7-P0.0)具有双重功能的8位并行接口,引脚为P32-39。第一功能是普通I/O口,需外接上拉电阻;第二功能是分时复用的8位数据线和低8位地址线(很少使用)。
-
P1口(P1.7-P1.0)单一功能8位准双向I/O口,带内部上拉电阻。引脚为P1-8。(无第二功能)
-
P2口(P2.7-P2.0)具有双重功能的8位并行接口,引脚为P21-28。第一功能是普通I/O口;第二功能是高8位地址线(很少使用) 。
-
P3口(P3.7-P3.0)具有双重功能的8位并行接口,引脚P10-17。第一功能是普通I/O口;第二功能如下表所列:
口线 第二功能 英文注释 P3.0 RXD(串行口输入) Receive External Data P3.1 TXD(串行口输出) Transmitted External Data P3.2 INT0(外部中断0输入) Interrupt 0 P3.3 INT1(外部中断1输入) Interrupt 1 P3.4 T0(计时器0计数输入) Timer 0 P3.5 T1(计时器1计数输入) Timer 1 P3.6 WR(外部RAM“写”选通) Write P3.7 RD(外部RAM“读”选通) Read
2.微控制器的工作原理
主要介绍8051微控制器中的CPU结构,控制器与运算器的组成与功能,以及微控制器的工作过程。
2.1 CPU的组成结构
CPU由运算器(ALU)和控制器(CU)两大部分组成。运算器是用来对数据进行算术运算和逻辑操作的执行部件;控制器是统一指挥和控制微控制器工作的部件。
2.2 控制器
控制器是CPU的大脑中枢,其功能是从ROM中逐条读取指令,迚行指令译码,幵通过定时和控制电路,在规定的时刻取出执行指令操作所需的控制信号,使各部分按照一定的节拍协调工作,实现指令规定的功能。控制器由指令部件、时序部件和操作控制部件三部分组成。
(1)指令部件
由16位程序计数器PC(Program Counter)、指令寄存器 IR(Instruction Register)、指令译码ID(Instruction Decode)等组成。
- 程序计数器 PC:16位的ROM指针,用于存放下一条取指指令的地址,寻址范围为64K;
- 指令寄存器IR: 存放当前指令的操作码,等待译码, PC从ROM中取出的内容放入IR;
- 指令译码器ID: 对当前指令操作码进行解析,并通过控制电路产生执行该指令需要的控制信号,完成指令规定的操作。
(2)时序部件
时序部件由时钟电路和分频器组成,用于产生MCU运行程序时,操作控制部件所需的时序信号。包括CPU工作的时钟基准(称为振荡周期或时钟周期),以及状态周期、机器周期等信号。
(3)操作控制部件
操作控制部件为指令译码器的输出信号配上节拍电位和节拍脉冲,形成执行指令需要的操作控制序列信号,以完成规定的操作。
2.3 运算器
运算器的任务是数据的处理和加工。由算术逻辑单元ALU、累加器Acc、暂存寄存器、程序状态寄存器PSW、布尔处理器、BCD码运算调整电路等通过内部总线连接而成。
- ALU (Arithmetic logic Unit):完成算术运算及与、或 、非、异或等逻辑操作,并通过对运算结果的判断,影响程序状态寄存器PSW相关位的状态。
- 位处理器(布尔处理器):能直接对位(bit)进行操作,操作空间是位寻址空间。位处理器中功能最强、使用最频繁的位是C,也称其为位累加器。
- 暂存寄存器:用于运算数据的暂时存放,该寄存器不能访问。
2.4 微控制器的工作过程
程序存储执行:计算机的工作过程实质上是执行程序的过程。用户编写的程序要预先存放在ROM中,微控制器的工作过程就是从ROM中逐条取出指令并执行的过程。
程序:是完成一个特定功能的一系列指令集。
指令:是微控制器指挥各功能部件工作的指示和命令。指令是一组二进制数,其编码格式及功能、类别和数量因CPU的不同而不同,是芯片设计者设定的。 一条指令包括两部分内容:
- 操作码:指明指令的功能(即做什么操作);
- 操作数:指明指令执行的数据或数据存放的地址(即操作对象)。
程序执行的过程:
- 读取指令:根据程序计数器(程序指针)PC中的值,从ROM读出现行指令,送到指令寄存器IR。
- 分析指令:由指令译码器对现行指令进行译码,分析该指令要求实现什么操作,如执行数据传送,还是加、减等运算等。
- 执行指令:取出操作数,由控制逻辑电路发出相应的控制信号,完成操作码规定的操作。
2.4.1 指令执行实例
执行MOV A,#15H的过程,机器码为74H,15H,存放在ROM的0000H 和0001H两个单元中。
-
读取指令
PC的内容(0000H)送到地址寄存器AR;PC指针的内容自动加1,指向指令的下一字节;
地址寄存器的内容(0000H)通过地址总线送到程序存储器(ROM),经存储器中的地址译码电路寻址到0000H单元;
在内部控制逻辑作用下,被寻址的ROM单元的内容(此时为74H)送到内部数据总线上,因为指令的第1字节是操作码,故该内容被送到指令寄存器IR。
-
分析与执行指令
进入指令寄存器的操作码74H,经指令译码器ID译码后,CPU就会知道该指令是要将一个数送到累加器A中,而该数(即操作数)就存放在操作码的下一个ROM单元。
CPU执行一个不取操作码相似的过程,把PC所指的0001H单元中的操作数15H取出,经内部总线直接送入A,而不是送入指令寄存器。
PC指针在CPU每次从ROM取指令或取数据时都会自动加1,此时PC的值变为0002H。
3. 存储器配置与地址空间
主要介绍8051微控制器的存储器的配置,包括程序存储器ROM和数据存储器RAM;内部RAM的结构,以及工作寄存器区、位寻址区等配置。
3.1 存储器配置
不同微控制器中存储器的用途是相同的,但结构不存储容量却不完全相同。微控制器中的存储器有两种基本结构形式:
- 冯·诺依曼( Von Neumann)结构,也称普林斯顿(Princeton)结构:ROM、RAM统一寻址;
- 哈佛(Harvard)结构:ROM、RAM分开寻址。
8051微控制器采用Harvard结构
3.2 程序存储器ROM
3.2.1 ROM空间配置
ROM的主要功能是存放程序和数据表格,以及掉电后不希望丢失的信息。在经典8051微控制器中,程序存储器可以分为内部和**外部(较少外扩)**两部分:
- 内部8K空间: 0000H~1FFFH ;
- 外部64K空间: 0000H~FFFFH。
- 内外部ROM是统一编址的,ROM总容量为64KB。所以内部8KB ROM和外部8KB ROM只能选用其一。
3.2.2 ROM中的6个特殊单元
8051 MCU的ROM中有6个特殊单元,是设置的特定程序入口地址,1个复位入口和5个中断入口。所谓入口,是指一旦满足条件,PC的值自动变为这些入口地址,则CPU将自动转向这些ROM地址取指令执行程序。
名称 | 入口地址 | 意义 |
---|---|---|
复位 | 0000H | 系统复位后PC=0000H |
外部中断0 | 0003H | 外部中断0响应时程序转向0003H |
定时器T0溢出 | 000BH | T0中断响应时程序转向000BH |
外部中断1 | 0013H | 外部中断1响应时程序转向0013H |
定时器T1溢出 | 001BH | T1中断响应时程序转向001BH |
串行口中断 | 0023H | 串行口中断响应时程序转向0023H |
3.3 数据存储器RAM
RAM一般用于存放实时采集的数据、计算的中间结果、控制参数、需要传送和显示的数据等。
在8051微控制器中,RAM有内部和外部两个空间,内部具有256B的通用RAM,对于具有并行外扩功能的MCU,同时可以扩展64KB外部RAM。
- 内部RAM: 00H~FFH(256B)
- 外部RAM: 0000H~FFFFH(64KB)
内部RAM配置
内部RAM中,低128B(00H-7FH)是基本数据存储器,可采用直接寻址、寄存器间接寻址、位寻址等多种寻址
方式;高128B(80H-FFH)是扩展数据存储器,只能采用寄存器间接寻址方式。
内部RAM可划分为三块空间:
- 工作寄存器区
- 位寻址区
- 用户RAM区(包括堆栈)
3.3.1 工作寄存器区
工作寄存器区位于内部RAM的00H~1FH单元,共32字节,分成四组。每组8个字节,分别记作R0~R7。 任一时刻,只能使用一个寄存器组;CPU复位后,默认选择第0组。工作寄存器区是寄存器寻址区域,对该区域操作的指令数量最多,均为单周期指令,执行的速度最快。
选择四组工作寄存器区的哪一组作为R0~R7,由PSW寄存器中的两位RS1、RS0来确定。RS1、RS0称为工作寄存器组选择位,两位确定4种选择。
3.3.2 位寻址区
内部RAM中的 20H~2FH,共16个单元是位寻址区。共有128位,位地址为00H~7FH。可位寻址的16B内部RAM,既可进行字节寻址,又可进行位寻址。可以使用位操作指令,如CLR,SETB等。除了位寻址区外,有一些SFR也可进行位寻址。
3.3.3 用户RAM区
- 用户RAM:内部RAM的 30H~FFH,以及没有使用的工作寄存器区和位寻址区。通常作为数据缓冲区和堆栈区。
- 数据缓冲区:用来存放各种用户数据,如AD转换结果、键盘扫描码、参数设定值、数据处理结果、显示或通信缓冲区等等。
- 堆栈区:堆栈是一种具有特殊用途的存储区域,其作用是用于暂存数据和地址;在子程序和中断服务程序中,用于保护断点和保护现场。8051微控制器的堆栈区必须开辟在内部通用RAM中。
4.特殊功能寄存器SFR
主要介绍8051微控制器中特殊功能寄存器SFR的配置与分布,SFR的位寻址空间,A、B、PSW的功能与应用。
4.1 SFR简介
特殊功能寄存器SFR(Special Function Register),也称专用寄存器。用于管理和控制MCU内部硬件功能模块(如定时器/计数器、串行口、中断系统等)的寄存器,用来存放功能模块的控制命令、状态或数据。
8051微控制器的SFR:
- 21个SFR,离散分布于80H~FFH的与用寄存器区,未定义的访问无效。
- 除程序计数器PC指针和R0~R7工作寄存器外,其余所有定义的寄存器都属SFR。
- 有些SFR可以位寻址,能位寻址的单元一定能字节寻址。
4.2 SFR的位寻址空间
字节地址的低位为0H或8H的SFR,是可位寻址的SFR。定义了83位。
通用RAM中的位寻址区和SFR中的位寻址区,构成了8051微控制器的位寻址空间。
4.3 程序计数器PC
也称为程序指针或PC指针,具有如下特点:
- PC是一个16位的专用寄存器,存放ROM的地址,因此称为程序指针,其寻址范围为0~64KB。
- PC存放的是下一条要执行的指令地址。复位后PC的内容为0000H,表示CPU将从ROM的0000H单元取指令执行。也即PC指向哪里,CPU就从其指向的ROM单元取指令执行程序。
- PC不属于特殊功能寄存器。因此不占用SFR地址空间,是不可寻址的,在程序中不能直接访问。
- PC可以通过LJMP、SJMP等转秱指令来间接修改PC的值。
4.4 特殊功能寄存器介绍
(1)累加器A
累加器A(或ACC)是CPU中使用最频繁8位与用寄存器。在算术、逻辑类操作时,ALU的一个输入来自A,运算结果也大多保存于A。
A的字节地址是E0H,可位寻址。
位地址 | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 |
---|---|---|---|---|---|---|---|---|
位符号 | Acc.7 | Acc.6 | Acc.5 | Acc.4 | Acc.3 | Acc.2 | Acc.1 | Acc.0 |
(2)B寄存器
B寄存器是一个8位寄存器,一般用于乘除指令中:
- MUL AB ; A*B=BA;
- DIV AB ; A/B=商A……余数B
B的字节地址是F0H;可位寻址,位地址为 F0H~F7H。
在其它情况下,B寄存器可以作为内部RAM中的一个单元来使用。
(3)PSW寄存器(程序状态字)
PSW 用来存放程序状态信息,表征指令执行后的状态,供程序查询和判别之用。字节地址: D0H; 位地址为:D0H-D7H
位地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
位符号 | Cy | AC | F0 | RS1 | RS0 | OV | F1 | P |
注释 | Carry | Assistant Carry | Flag 0 | Register bank Selector bit 1 | Register bank Selector bit 1 | Overflow | Flag 1 | Parity Flag |
对于C、AC、OV、P,根据指令执行结果,由硬件置位或清0,称为状态位。
对于RS1、RS0、 F1、F0,根据使用需要,由指令设定,称为控制位。
RS1、RS0为工作寄存器组选择位, F1、F0由用户自定义使用。
- C(Cy):迚位标志。在加、减法运算时,若高位(D7)发生进位或借位则被置1(即C=1),否则被清0(C=0)。
- AC:辅助进位标志。在加、减法运算时,若低4位向高4位发生进位或借位则AC=1,否则AC=0;AC标志在十进制调整指令DA A中要用到。
- F0、F1:软件标志。由软件置位或复位,由用户定义使用。
- RS1、RS0:工作寄存器组选择位。由软件置位或复位,用来选择4组工作寄存器中的一组。
- OV:溢出标志。对于带符号数而言,反映运算结果是否溢出。
- OV=1:溢出,表示运算结果超出了A所能表示的带符号数的范围(-128~+127,即8位带符号数的范围)。
- OV=0:没有溢出。
- 对于乘法MUL,当A、B两个乘数的积超过255时OV置位;否则,OV=0。
- 对于除法DIV,若除数为0时,OV=1;否则,OV=0。
- P:奇偶标志。用以表示指令操作之后,累加器A中1的个数的奇偶性。
- 若A中“1”的个数为奇数个,则P=1;
- 若A中“1”的个数为偶数个,则P=0;
(4) 堆栈指针SP (Stack Point)
堆栈的概念:堆栈是定义为特殊用途的存储区,主要功能是临时存放数据和地址,通常用于保护断点和保护现场。堆栈有二种形式,一是向上(向高地址)生成,二是向下(向低地址)生成。
8051 MCU的堆栈为满顶法向上生成的软件堆栈,其堆栈区必须开辟在内部通用RAM中。
堆栈按照“先进后出”即“后进先出”的原则存取数据,最后进栈的数据最先被弹出。压入堆栈的数据总是保存在堆栈的顶部,从堆栈弹出的总是栈顶的数据。
栈顶指针SP:存放堆栈栈顶地址的一个8位寄存器,地址为81H。8051 MCU的堆栈是向上生成的:进栈时栈顶向高地址生长,SP的内容增加;出栈时栈顶向下回落,SP的内容减少。所以SP总是指向堆栈的栈顶。
(5)数据指针DPTR (Data Pointer)
数据指针DPTR是一个16位的SFR。其功能是外部RAM(地址范围0000H-FFFFH)的地址指针,是存放外部RAM地址的16位寄存器。DPTR由两个8位寄存器组成,高8位为DPH表示,低8位用DPL。DPH地址:83H; DPL地址: 82H。
(6)P0-P3端口寄存器
P0、P1、P2、P3:分别是I/O端口P0~P3的锁存器,地址分别为:80H、90H、A0H、B0H,可以位寻址。
对于端口即引脚的操作实际上是对这些寄存器的操作,其端口引脚与端口寄存器的位具有映射关系。
(7)其它特殊功能寄存器
SBUF、IP、IE、TMOD、TCON、SCON、PCON等,将结合相关章节内容进行介绍。微控制器复位后,除SP为07H,P0~P3为FFH外,其余均为0。
###5、I/O端口结构不应用特点
主要介绍8051微控制器4个I/O端口P0-P3的内部结构、端口功能,以及它们的结构特点和应用特性。
端口内部结构:准双向I/O口结构。P0-P3端口的每一位,均有一个辒出锁存D触发器、输出驱动电路组成;以及两
个分别用于读锁存器数据和读引脚的三态输入缓冲器BUF1和BUF2。
输出时:当CPU通过内部总线向端口锁存器输出1或0时,通过输出驱
动电路,端口相应引脚就会输出高电平或低电平。
输入时:即读引脚时,如果端口锁存器状态为0,则T2导通,引脚被钳位在“0”状态,导致无法得到端口引脚的高电平状态。(准双向口的特点)
P3端口:
字节地址为B0H,位地址为B0H-B7H;