内部结构


MCS-51 系列单片机主要由以下部件通过片内总线连接而成:中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行输入/输出口(P0 口~P3 口)、串行口、定时器/计数器、中断控制、总线控制及时钟电路。

CPU的组成

CPU 是单片机的核心部件,由运算器和控制器组成,用以进行各种算术和逻辑运算,
并实现数据的传送。
运算器包括算术逻辑单元部件 ALU(Arithmetic and Logic Unit)、位处理器、8 位累加器 A、寄存器 B、两个 8 位暂存寄存器 TMP1 和 TMP2 及程序状态字寄存器 PSW(8 位)等。ALU 不仅可以实现 8 位数据的加、减、乘、除、增量、减量、十进制调整、比较等算术运算和与、或、异或、求补等逻辑运算,同时还具有一般微机所不具备的位处理功能,可对位变量进行置位、清零、求补及与、或等操作。控制器是 CPU 的神经中枢,它识别指令并根据指令性质协调单片机内部各组成单元自动协调地工作。主要包括程序计数器 PC、PC 增量器、指令寄存器、指令译码器、定时及控制逻辑电路等。其功能是以主振频率为基准产生时钟信号,向单片机内部各组成单元发出各种微控制信号,控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。

指令执行的基本步骤

必须先在存储器中载入程序,单片机才可以开始工作。所谓程序,就是为了完成某项工作,将一系列指令有序地组合,而指令则是要求单片机执行某种操作的命令。指令分为操作码和地址码两部分。操作码部分规定了单片机的操作类型;而地址码部分一般是直接或间接地给出了参与操作的数据的存放地址,所以地址码也可以称为操作数。单片机执行一条指令一般分为两个步骤:取指令阶段和指令执行阶段。CPU 从程序存储器中取出指令操作码,送到指令寄存器,再经指令译码器译码,产生一系列控制信号,以明确该指令执行什么样的操作,以及操作数的存放地址,根据这个地址获取操作数,这是取指令阶段;然后 CPU 按操作码指明的操作类型对获取的操作数进行操作(也可称为运算),这是指令执行阶段。
那么 CPU 如何完成取指令和执行指令操作的全过程呢?
CPU 复位后,程序计数器 PC 会自动地指向第一条指令存放的存储单元的首地址(16位 PC 中的内容总是 CPU 将要执行的那条指令所在的存储单元的首地址)。在控制信号的控制下,CPU 从该存储单元中取出指令,暂存在指令寄存器中。指令的操作码部分进入指令译码器译码,译码结果通知控制电路发出相应的控制信号来控制 CPU 各部件,以完成这条指令的操作。指令的地址码部分送往操作数地址形成电路,以便形成实际的操作数地址,然后 CPU 再通过总线从该地址所在单元取出操作数送入暂存寄存器,从暂存寄存器送入算术逻辑运算部件 ALU 中。运算结果送指令所指定的单元,同时将运算结果的有关状态送入程序状态字寄存器 PSW 中。指令的实际执行过程比上述要复杂的多,并且所有的操作都是在精确的时序控制下进行的。在学习时需要注意以下两点:
1)PC 是一个有自动加 1 功能的 16 位计数器。CPU 从存储单元取指令的过程中,每取一个字节的内容,程序计数器 PC 就自动加 1。在取完这条指令后,PC 中的内容就是下一条要执行的指令所在存储单元的首地址了。PC 没有地址,是不可寻址的,因此,用户不能对它进行读和写操作。
2)以上是 CPU 顺序执行指令的操作过程,然而在实际应用中,CPU 有时还要执行程序的转移、子程序的调用和中断响应等操作,那时 PC 中的内容不再是上述情况中简单地加1,而是根据不同的情况自动地被置入或修改成新的目的地址,从而改变程序的执行顺序。

内部存储器

存储器是组成单片机的主要部件之一,其功能是存储信息(数据和程序)。存储器按其存储方式可以分成两大类:一类为随机存储器 RAM;另一类是只读存储器 ROM。CPU 在运行过程中可对 RAM 随时进行数据的写入和读出,但在关闭电源时,RAM 中所存储的信息会丢失,所以 RAM 只能用来存放暂时性的输入/输出数据、运算中的结果等。RAM 也因此常被称为数据存储器。
而 ROM 是写入数据后不能更改只能读出的存储器。在断电后,ROM 中的信息保留不变,所以 ROM 用来存放固定的程序和固定的数据,如系统程序、常数、表格等。ROM 也因此常被称为程序存储器。常用的 ROM 根据其编程方式不同可分为以下 5 种类型:掩膜型ROM(MROM)、一次性可编程ROM(PROM,又称为 OTPROM)、紫外线可擦 ROM(EPROM)、电可擦 ROM(EEPROM)、闪速 ROM(Flash ROM)。
MCS-51 单片机存储器的地址空间可分为 3 个:
1)片内片外统一编址的 64KB 的程序存储器地址
2)片内数据存储器与特殊功能寄存器统一编址的 256B 内部数据存储器地址空间(8位地址
00H-7FH,80H~FFH);
3)64KB 片外数据存储器地址空间(16 位地址 0000H~FFFFH)。
对于复杂一些的单片机应用系统,当片内所固有的程序存储器和数据存储器不能满足需要时,往往还要在单片机芯片外另行扩展存储器,称之为片外存储器。

内部程序存储器

MCS-51 单片机有片内有程序存储器和片内无程序存储器之分。如 80C51 单片机片内设置有4KB 的掩膜型 ROM。其地址范围是 0000H-0FFFH。当 EA 接高电平时,指令寻址地址在 0000H~0FFFH 时,CPU 访问内部存储单元,如果指令寻址地址大于 0FFFH 时,CPU自动转向对片外存储器的访问。当 EA 接低电平(接地)时,CPU 只能访问外部程序存储器,这时外部程序存储器的地址从 0000 开始编址。80C31、80C32 单片机因其片内无程序存储器,所以只能采用将EA 接地的方法。
程序存储器的一 些低端地址单元是用作存储特定程序的入口地址的,其中0000H-0002H 这 3 个单元是系统的启动单元。系统复位后,程序计数器 PC 中的复位值是0000H,所以系统是从 0000H 单元开始取指令执行程序的。在编程时,应当在这 3 个单元中存放一条无条件转移指令,以转向执行指定的程序。而地址为 0003H~002AH 的 40 个单元是中断服务程序地址区,分成 5 段,每段 8 个单元,分别分配给 5 个中断源,具体分配如下:

在中断响应后,系统按中断类型自动转到各中断服务程序的首地址单元去中断服务程序地址区应当存放中断服务程序,但在实际应用中,8 个存储单元往往难以存下一个完整的中断服务程序,所以,通常是从该中断服务程序的首地址开始,存放一条无条件转移指令,以便响应中断后,通过该地址区转到中断服务程序的实际入口地址单元中去。

内部数据存储器

MCS-51 单片机内部有 128 或 256 字节的 RAM 用作数据存储器(不同的型号有区别),它们均可读写,部分单元还可以位寻址。
80C51 单片机的片内数据存储器共有 256 个字节,地址范围为 00H-7FH 单元的 128 个字节作为用户 RAM 区,分成工作寄存器区、位寻址区、通用 RAM 区三部分;地址范围为80H~FFH 单元的 128 个字节作为特殊功能寄存器区(SFR)。

用户RAM区

1)工作寄存器区
地址范围在 00H~1FH 的 32 个字节可分成 4 个工作寄存器组,每组占 8 个字节,具体划分上图所示。每个工作寄存器组都有 8 个寄存器,均分别称为 R0、R1、R2、R3、R4、R5、R6、R7。但在程序运行时,只允许一个工作寄存器组工作,称为当前工作寄存器组,所以每组之间不会因为名称相同而混淆出错。用哪组工作寄存器作为当前工作寄存器组,可由特殊功能寄存器中程序状态字寄存器PSW 中的 RS1、RS0 共 2 位二进制数组合来决定,见表所示。

注意以下几点:
(1)RS1、RS0 的状态可由写指令来进行设置,以选择不同的工作寄存器组;
(2)复位后自然选中第 0 组工作寄存器;
(3)从某一工作寄存器组换至另一个字寄存器组时,原工作寄存器中的内容将被屏蔽保护;
(4)若程序中不需要用 4 组工作寄存器,那么不用的工作寄存器可作为一般 RAM 使用。
2)位寻址区
内部 RAM 的 20H-2FH 地址范围共 16 个字节单元为位寻址区,既可作为一般的 RAM进行字节寻址,也可以对单元中的每一位进行位寻址(称 MCS-51 具有布尔处理功能),这种位寻址能力是一般微机所没有的。16 个字节单元共 128 位,每位有位地址,以便对位进行操作,所以共有 128 个位地址(00H-7FH)。CPU 能直接寻址这些位,执行置 1、清 0、求“反”、转移、传送等操作。位地址分配见表 1.3-2 所示,其中 MSB(Most Significant Bit)表示最高有效位,LSB(Lost Significant Bit)表示最低有效位。00H-7FH 共 128 个位地址与内部 RAM 中 128 个字节地址 00H~7FH 重叠,在应用中可通过指令的类型来区分它们是位地址还是字节地址。
3)通用 RAM 区
在内部数据存储器的 128 个字节单元中,工作寄存器区和位寻址区占去了 48 个单元,剩下的 80 个单元以存储单元的形式来用,没有其它的规定和限制,称为通用 RAM 区,用来存放用户数据或作为堆栈区使用。CPU 对该区中的每个 RAM 单元只能实现字节寻址。

特殊功能寄存器

MCS-51 中的特殊功能寄存器(Special Function Registers:SFR),也称为专用寄存器,它们离散地分布在内部 RAM 地址为 80H~FFH 的 128 个字节的存储空间中,构成了 SFR 存储块。SFR 反映了 MCS-51 单片机的运行状态,其功能已做了专门的规定,用户不能修改其结构。
MCS-51 中的特殊功能寄存器共有 21 个,在这 21 个 SFR 中,字节地址能被 8 整除(即十六进制数的地址码尾数为 0 或 8 的)的 11 个单元具有位寻址能力。有效的位地址共有 82个,可用位地址、位符号、单元地址.位序和寄存器名.位序 4 种方法来表示,如 D7H、C、D0H.7、PSW.7 都表示同一个位,即程序状态字寄存器的最高位。但一般用位符号来表示。各特殊功能寄存器的符号及位地址见表所示。

这些特殊功能寄存器分别用于以下各功能单元:
1)CPU:累加器 A、B 寄存器、程序状态字寄存器 PSW、堆栈指针 SP、数据指针 DPTR(由DPH 和 DPL 两个 8 位寄存器组成)。
2)并行口:P0、P1、P2、P3。
3)串行口:串行口控制寄存器 SCON、串行数据缓冲器 SBUF、电源控制寄存器 PCON。
4)中断系统:中断允许控制寄存器 IE、中断优先级控制寄存器 IP。
5)定时器/计数器:定时器/计数器方式控制寄存器 TMOD、定时器/计数器控制寄存器TCON、定时器/计数器 0(TH0、TL0)、定时器/计数器 1(TH1、TL1)。

堆栈

堆栈就是在单片机内部 RAM 中,从某个选定的存储单元开始划定的一个地址连续的区域。设立堆栈的目的是用于数据的暂存,中断、子程序调用时断点和现场的保护与恢复。这个区域本身没有任何特殊之处,它就是内部 RAM 的一部分,也是用来存放数据的,不同的是这个区域以选定的某个存储单元作为栈底,只允许向一个方向写入数据,最后一个写入数据的存储单元称为栈顶。堆栈的生成有两种情况:向高地址方向写入数据生成的堆栈称为向上生长型堆栈;反之称为向下生长型堆栈。MCS-51 单片机设置的是向上生长型堆栈。数据写入堆栈为插入(PUSH)运算,通常称为入栈;数据从堆栈中读出为删除(POP)运算,通常称为出栈。按堆栈的规定,入栈和出栈只能在栈顶一端进行。因此,向上生长型的堆栈栈顶存储单元的地址必定随着数据的入栈而递增,随着数据的出栈而递减,并由此规定可知,对栈顶进行入栈和出栈操作必定是“先进后出”或“后进先出”。

堆栈指针

堆栈指针 SP 是一个 8 位特殊功能寄存器,用于指示堆栈的栈顶地址, SP 总是指向堆栈栈顶,它决定了栈顶在内部 RAM 中的物理位置。所以,每当执行一次入栈操作(PUSH 指令)时,SP 就会在原来值的基础上自动加 1;每当执行一次出栈操作(POP 指令)时,SP就会在原来值的基础上自动减 1。当堆栈中位空(无数据)时,栈顶地址等于栈底地址,两者重合,SP 的内容即为栈底地址。栈底地址一旦设定,就固定不变,直至重新设置。每当数据进栈或出栈时,SP 的内容都随之变化,即栈顶随之浮动。
数据入栈的操作过程为:先将 SP 加 1(SP←SP+1),然后将要入栈的数据存放在 SP指定的存储单元中。将数据从堆栈中弹出时,先将 SP 寄存器指定的存储单元的内容传送到POP 指令给定的寄存器或内部 RAM 单元中,然后 SP 减 1(SP←SP-1)。

堆栈的开辟

单片机的堆栈只能开辟在片内数据存储器中,称为内堆栈形式。系统复位后,SP 中的复位值是 07H,即 SP 指向片内数据存储器中地址为 07H 的存储单元,这个存储单元正好在单片机片内数据存储器的工作寄存器区。为了避免占用宝贵的工作寄存器区和位寻址区,所以,在程序设计时,常用指令对 SP 中的复位值进行修改,把堆栈开辟在通用 RAM 区,即在 30H~7FH 地址范围内开辟一个地址连续的存储区域来实现堆栈。

复位

复位是单片机的初始化操作,其主要功能是将程序计数器 PC 初始化为 0000H,使单片机从 0000H 单元开始执行程序。除了进入系统的正常初始化外,当程序运行出错或操作错误使系统处于死锁状态时,也须重新启动单片机,使其复位。

MCS-51的工作方式

执行指令程序方式

单片机上电复位后,从程序存储器的 0000H 单元开始执行程序,这就是执行指令程序方式,是单片机的基本工作方式。它又分为连续执行工作方式和单步执行工作方式。

连续工作方式

这种工作方式是所有单片机都需要的一种方式。由于单片机复位后,PC 值为 0000H,因此复位后单片机总是转到 0000H 处执行程序,但是用户程序并不在 0000H 开始的存储器单元中,为此,需要在 0000H 处放入一条无条件转移指令,以便跳转到用户程序的实际入口地址处执行程序。单片机按照程序事先编排的任务,自动连续地执行下去。

单步执行工作方式

这是用户调试程序的一种工作方式,在单片机开发系统上有一专用的单步按键。按一次,单片机就执行一条指令,可以逐条检查程序,发现问题进行修改。
单步执行工作方式是利用单片机外部中断功能实现的。单步执行键相当于外部中断的中断源,当它被按下时,相应电路就产生一个负脉冲(即中断请求信号),送到单片机的 INT0(或 INT1 )引脚,MCS-51 单片机在 INT0 上的负脉冲作用下,便能自动执行预先安排在中断服务程序中的单步执行指令,执行完毕后中断返回。

MCS-51指令集

指令中常用的符号

1)#:立即数符。#data:8 位立即数;#data16:16 位立即数。
2)direct:8位直接地址,代表RAM内00H-7FH或SFR的80H~FFH。
3)@:间接寻址符。在间接寻址方式中,表示间接寻址寄存器指针的前缀标志。如@Ri,@DPTR,@A+PC,@A+DPTR。
4)addr11:11 位目的地址。主要用于ACALL 和 AJMP 指令中。
5)addr16:16 位目的地址。主要用于 LCALL 和 LJMP 指令中。
6)rel:带符号的 8 位偏移地址。主要用于相对转移指令,以形成转移的目的地址,其范围是相对于下一条指令第 1 字节地址的-128~+127 个字节。
7)bit:位地址。代表片内 RAM 中的可寻址位 00H~7FH 及 SFR 中的可寻址位。
8)Rn(n=0~7):表示当前工作寄存器 R0~R7 中的任一个寄存器。
9)Ri(i=0 或 1):表示通用寄存器组中用于间接寻址的两个寄存器 R0, R1。
10) A(或 ACC)、 B :表示累加器、 B 寄存器。(A 是寄存器方式,ACC 是直接方式的累加器)
11) C:表示 PSW 中的进位标志位 Cy
12) $:表示当前的指令地址。
13) /:在位操作指令中,表示对该位先求反后再参与操作。
14)(X):表示由 X 所指定的某寄存器或某单元中的内容。
15) ((X)):表示由 X 间接寻址单元中的内容。
16) ←:表示指令的操作结果是将箭头右边的内容传送到左边。
18) ∧ 、 ∨ 、⊕ :表示逻辑与、或、异或

MCS-8051单片机原理相关推荐

  1. 《迷人的8051单片机》——导读

    前 言 在单片机的"江湖"中,8051单片机历来都是兵家必争之地.这是因为8051单片机有着悠久的历史和最为庞大的用户群,很多时候它已经成为8位单片机领域的一种行业标准,众多器件都 ...

  2. 第5章 8051单片机工作原理

    通过前面4位计算机的结构.指令和程序,我们对计算机这一事物有了比较深入的理解,但这个4位机结构简单.指令集不丰富.运算速度慢.不支持高级语言编程,基本没有多少实际应用价值,仅能用来理解计算机工作原理. ...

  3. 8051单片机I/O端口结构与原理

    8051单片机I/O端口结构与原理 1. P1端口 图1.1 P1.X的内部结构示意图   P1口是一个8位双向并行I/O口,每位的内部结构如图1.1所示,P1口由8组这样的结构组成. 1.1 P1口 ...

  4. [渝粤教育] 昆明理工大学 单片机原理及接口技术(宋庆和) 参考 资料

    教育 -单片机原理及接口技术(宋庆和)-章节资料考试资料-昆明理工大学[] 1.4 发展趋势 1.[多选题]未来单片机发展趋势表现在以下几个方面 A.CPU流水线结构.增加数据总线的宽度提高运算速度和 ...

  5. 8051单片机特殊寄存器功能定义

    作为51单片机特殊功能寄存器 速查表,在编程时可提供快速参考,对初学者可能不友好,建议使用电脑查看. 特殊功能寄存器表:SFR 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit ...

  6. 单片机原理及接口技术期末复习

    1.单片机概述 1.单片机又称单片微计算机,最初缩写为SCM(Source Code Management,源代码管理),它集成了中央处理单元CPU(包含运算器.控制器),并行I/O.串行I/O.定时 ...

  7. 航标灯实验c语言程序,单片机原理及应用习题 (带答案)

    <单片机原理及应用>习题 一.填空 1.MCS-51单片机访问外部存储器时,利用 ALE 信号锁存来自 P0 口的低8位地址信号. 2.MCS-51系统中,当PSEN信号有效时,表示从P0 ...

  8. 试从微型计算机的硬件组成角度谈谈单片机,单片机原理及应用课后习题参考答案1~6章...

    <单片机原理及应用>习题答案 第一章计算机基础知识 1-1 微型计算机主要由哪几部分组成?各部分有何功能? 答:一台微型计算机由中央处理单元(CPU).存储器.I/O接口及I/O设备等组成 ...

  9. 《迷人的8051单片机》---- 1.2小元器件有大智慧

    本节书摘来自华章出版社<迷人的8051单片机>一书中的第1章,第1.2节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 小元器件有大智慧 ...

  10. [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(2)

    单片机原理与应用--在线考试复习资料 一.单选题 1.信息能够同时双向传送的是( ). A.并行通信 B.单工串行通信 C.半双工串行通信 D.全双工串行通信 2.T89S52单片机片内有( )个定时 ...

最新文章

  1. 真相!30K拿到互联网大厂offer,网友:我服了!
  2. 华为程序员发现孩子不是自己的!怒提离婚!但老婆只要房子车子!不要孩子!绿他的竟然是个酒吧混混!...
  3. Linux (Ubuntu)使用vi和vim方向键变成了ABCD
  4. 终端读写命令 -- read write wall
  5. VC 系统托盘编程,含有气泡提示
  6. MySQL-索引优化篇(2)_使用索引扫描来优化排序
  7. 四针手表指的是什么_1000~1500元的男士手表推荐
  8. 安顺那里有学计算机,安顺计算机专业学费
  9. java如何添加进程_如何创建一个进程,如何进程调用进程
  10. 无人车创业正驶入分水岭
  11. go语言--goroutine
  12. js、jQuery实现文字上下无缝轮播、滚动效果
  13. 《Oracle SQL疑难解析》——1.10 删除表中的所有行
  14. 4.jenkins 添加一台 Linux 服务器
  15. 计算机键盘指示灯不亮也不启动不了机,电脑开不开机,显示器无反应,键盘指示灯不亮,主...
  16. 高等数学(第七版)同济大学 习题2-5 个人解答
  17. C# 设置Excel 首行冻结窗口
  18. 微信公众平台接口测试帐号申请
  19. 四十七、Fluent近壁面处理
  20. 单集群10万节点 走进腾讯云分布式调度系统VStation

热门文章

  1. java guice_如何在Guice中进行需要注入实例的动态绑定?
  2. Pinia食用指南-基础
  3. 错误收集:备忘MPI Application rank 0 exited before MPI_Finalize()nbsp
  4. 软件测试学习 之 Python 两种执行方式——python和python -m 的区别
  5. 品三国、论国产RISC-V芯片天下大势
  6. Axure RP 8的安装教程
  7. 干货 | 科研决策怎么做?四个步骤一招解决!
  8. RT-Thread 内存泄漏分析利器 memtrace+ramdump
  9. C++调用win32 API操作打印机实现驱动打印
  10. 一阶数字低通滤波器设计matlab