第二章 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组:

  1. 电源、地: 2条;
  2. 时钟电路: 2条;
  3. 控制线: 4条;
  4. I/O口线: 32条。

电源、地:
电源、地(VCC,GND): 2条

时钟电路:

  1. XTAL1(CRYSTAL 1):接外部晶振一端。是片内振荡电路反相放大器的输入端。
  2. XTAL2:接外部晶振另一端。是片内振荡电路反相放大器的输出端,从该引脚可输出频率为晶振频率的时钟信号。

XTAL1和XTAL2两个引脚除连接晶振外,还要连接两个起振电容。经典51晶振频率:1.2MHz-12MHz

控制引脚( ALE、PSEN、EA、RST ):

  1. ALE(Address Latch Enable,P30):地址锁存允许信号输出端。有效时输出一个高脉冲。在访问外部存储器时,用于锁存低8位地址,以实现P0口的8位数据线和低8位地址线的分时复用和隔离。(由于很少外扩,此控制引脚用的不多)。
  2. PSEN(Program Store Enable,P29):ROM选通信号输出端,低电平有效。 (由于很少外扩,此控制引脚用的不多)。
  3. EA(External Access Enable,P31):内部、外部ROM选择信号输入端,低电平有效。 (由于很少外扩,此控制引脚用的不多)。
  4. RST(Reset,P9)复位信号输入端,高电平有效。在此引脚施加两个机器周期的高电平,就可以对MCU进行复位。此引脚为低电平时,微控制器为工作状态。

I/O引脚(P0、P1、P2、P3):32条I/O口线

  1. P0口(P0.7-P0.0)具有双重功能的8位并行接口,引脚为P32-39。第一功能是普通I/O口,需外接上拉电阻;第二功能是分时复用的8位数据线和低8位地址线(很少使用)。

  2. P1口(P1.7-P1.0)单一功能8位准双向I/O口,带内部上拉电阻。引脚为P1-8。(无第二功能)

  3. P2口(P2.7-P2.0)具有双重功能的8位并行接口,引脚为P21-28。第一功能是普通I/O口;第二功能是高8位地址线(很少使用) 。

  4. 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)等组成。

  • 程序计数器 PC16位的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的不同而不同,是芯片设计者设定的。 一条指令包括两部分内容:

  • 操作码:指明指令的功能(即做什么操作);
  • 操作数:指明指令执行的数据或数据存放的地址(即操作对象)。

程序执行的过程:

  1. 读取指令:根据程序计数器(程序指针)PC中的值,从ROM读出现行指令,送到指令寄存器IR。
  2. 分析指令:由指令译码器对现行指令进行译码,分析该指令要求实现什么操作,如执行数据传送,还是加、减等运算等。
  3. 执行指令:取出操作数,由控制逻辑电路发出相应的控制信号,完成操作码规定的操作。

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可划分为三块空间:

  1. 工作寄存器区
  2. 位寻址区
  3. 用户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;

第二章 51单片机硬件结构相关推荐

  1. 第二章 MCS-51单片机硬件结构与工作原理

    第二章 MCS-51单片机硬件结构与工作原理 2.1 MCS-51单片机的硬件结构 2.2 引脚介绍 2.3 复位电路 2.4 寄存器 2.5 时序 2.6 MCS-51的工作方式 2.1 MCS-5 ...

  2. 单片机原理与实践学习记录之51单片机硬件基础

    单片机原理与实践学习记录 第三课(更新时间:2021.9.6) 51单片机硬件基础 MCS-51是Intel公司生产的一个单片机系列的总称.在功能上,该系列单片机有基本型和增强型两大类,通常以芯片型号 ...

  3. 第二章:并行硬件和并行软件

    第二章:并行硬件和并行软件 背景知识 ​ 冯诺依曼结构:内存与CPU分开,CPU分为控制单元和算术逻辑单元,内存的速度限制了CPU的速度 ​ 进程.多任务和线程:没啥好说的,操作系统都有 ​ 对冯·诺 ...

  4. AT89S51单片机硬件结构

    AT89S51单片机硬件结构 AT89S51单片机片内结构   由此可以看出,基本结构为CPU 加上外围芯片的传统微机结构.CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,Special Fu ...

  5. 51单片机硬件设计-最小系统(一)

    51单片机硬件设计 很早之前就想编写一个51单片机的库,库中集成所有的电子小模块,可裁剪添加,到现在也算是实现了,为此写一个系列的文章以作记录. 电源部分 电源部分没什么东西,就是一个插针,四针脚的插 ...

  6. 单片机_第2章 MCS-51单片机的结构及原理

    目录 2.1 MCS-51单片机的结构 2.1.1 MCS-51单片机的内部结构 80C51单片机的内部资源主要包括: CPU(Central Processing Unit ) 2.1.2 MCS- ...

  7. 51单片机——硬件基础

    单片机--硬件基础知识 宗旨:技术的学习是有限的,分享的精神是无限的. 1.单片机内部资源 STC89C52:8KFLASH.512字节RAM.32个IO口.3个定时器.1个UART.8个中断源 (1 ...

  8. 第一章 51单片机开发入门知识介绍

    第一章 单片机开发入门知识介绍 1.1 51单片机介绍 51单片机是对所有兼容Intel 8031指令系统的单片机的统称. 该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技 ...

  9. 《java虚拟机规范SE7》整理——第二章:Java虚拟机结构

    按照<java虚拟机规范SE7>章节顺序整理的笔记. 第二章:java虚拟机的结构 目录: 数据类型 运行时数据区 栈帧 浮点算法 字节码指令集 一. 数据类型 虚拟机可以操作的类型可以分 ...

最新文章

  1. 来说一下Ansible的简明教程
  2. Quartus16.1布线优化选择,重编译可能会满足时序
  3. EasyUI DataGrid 合并单元格
  4. 施一公:为什么要独立思考、为什么要尊重科学?
  5. stm32基本定时器
  6. python打开文件注意事项_Python 中关于文件操作的注意事项
  7. puppet详解(六)——exec资源详解
  8. 锐捷客户端在Linux下的使用。
  9. 2018最新Python数据分析实战教程视频 python数据分析班视频 Python数据分析基础教程 利用Python进行数据分析
  10. 伴你装系统系列(上篇):Windows10
  11. UDP的单播广播和组播
  12. 自动控制系统实验总结
  13. OLED的中英文和图片显示
  14. ImageWarping变形算法研究---反距离加权插值(IDW)
  15. Clojure Web开发–最新技术–第2部分
  16. 快速找出一个数组中的最大数、第二大数
  17. 网线品质差的三大影响
  18. C++全套视频教程分享——
  19. SML(standard ML)入门学习(1)
  20. 【云原生之企业级容器技术 Docker实战一】Docker 介绍

热门文章

  1. 2020CSP-S T1 儒略历
  2. 《日渐崩坏的世界》赏析(1)
  3. dll和lib的区别
  4. ffmpeg 收集 (刚开始,有待完善)
  5. 解决STM32新增加函数出现Undefined symbol HAL_ADC_Init (referred from main.o). 问题
  6. 你知道这个提高 Java 单元测试效率的 IDEA 插件吗
  7. 电商平台订单获取API接口文档
  8. 2010 小玩股票的进
  9. linux网络socket
  10. vue+echarts绘制3D地图