8051 系列单片机内部结构

1.2   8051  系列单片机内部结构

8051系列单片机内部结构可以分为 CPU、存储器、并行口、串行口、定时/计数器和中断逻辑这几部分,如图 1-2-1。

 

1-2-1

1.2.1  微处理器

微处理器又称 CPU,由运算器和控制器两大部分组成。

1. 算术逻辑单元

它在控制器所发内部控制信号的控制下进行各种算术操作和逻辑操作。

MCS-51 系列单片机的算术逻辑单元能完成带进位位加法、不带进位位加法、带进位位减法、加 1、减 1、逻辑与、逻辑或、逻辑异或、循环移位以及数据传送、程序转移等一般操作外,其特点是:

� 在 B 寄存器配合下,能完成乘法与除法操作。

� 可进行多种内容交换操作。

� 能作比较判跳转操作。

� 有很强的位操作功能。

2. 累加器

累加器 A 是最常用的专用寄存器。

进入 ALU 作算术操作和逻辑操作的操作数很多来自 A,操作的结果也常送回 A。有时很多单操作数操作指令都是针对 A 的,例如指令 INC A 是执行 A 中内容自加 1 的操作,指令 CLR A 是执行将 A 内容清零的操作,指令 RL A 是执行使 A 各位内容依次循环向左移动一位的操作。

3. 程序状态字

程序状态字 PSW 是一个 8 位寄存器,它包含了许多程序状态信息,其各位的含义见图 1-2-2。

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

 FO

RS1

 RS0

 OV

 -

 P

1-2-2

PSW 各位的含义如表 1-2-1。

含义

CY

进位标志。有进位/借位时,CY=1,否则 CY=0。

AC

辅助进位标志。8 位运算时,如果低半字的最高位 D3 有进位,则 AC=1,否则 AC=0;8 位减法运算时,如果 D3 有借位,则 AC=1,否则 AC=0。AC 在作 BCD 码运算而进行二-十进制调整时很有用。

FO

软件标志。这是用户定义的一个状态标志。可通过软件对它置位、清零;在编程时,也常测试其是否建起而进行程序分支。

RS1

RS0

工作寄存器组选择位,可借软件置位或清零,以选定 4 个工作寄存器组中的一个投入工作,详见表 1-2-2。

OV

溢出标志。当带符号数运算结果超出-128~127 范围时,OV=1,否则 OV=0;当无符号数乘法结果超过 255 时,或当无符号数除法的除数为 0 时,OV=1,否则 OV=0。

P

奇偶标志。每执行一条指令,单片机都能根据 A 中 1 的个数的奇偶自动令 P 置位或清零,奇为 1 ,偶为 0。此标志对串行通信的数据传输非常有用,通过奇偶校验可校验传输的可靠性。

RS1、RS0 与工作寄存器组的关系如表 1-2-2。

1-2-2

RS1

RS0

 工作寄存器组

0

0

0 组(00H~07H)

0

1

1 组(08H~0FH)

1

0

2 组(10H~17H)

1

1

3 组(18H~1FH)

 

1.2.2  振荡器与  CPU

 1. 振荡器

 

1-2-3

MCS-51 系列单片机内含有一个高增益的反相放大器,通过 XTAL1、XTAL2 外接作为反馈元器件的晶体后便成为自激振荡器,接法见图 1-2-3。晶体呈感性,与两个 30pF 电容并联谐振电路。振荡器的震荡频率主要取决于晶体;电容的值有微调作用,通常取 30pF 左右。电容的安装位置应尽量靠近单片机芯片。

 2. CPU  时序

振荡器输出的震荡脉冲经 2 分频成为内部时钟信号,用作单片机内部各功能部件按序协调工作的控制信号;其周期成为时钟周期,也称为状态周期。

CPU 执行一条指令的时间成为指令周期。指令周期已机器周期为单位,例如单周期指令、双周期指令。MCS-51 系列单片机除乘法指令、除法指令是 4 周期指令外,其余都是单周期指令和双周期指令。若用 12MHz 晶振,则单周期指令和双周期指令的执行时间分贝为 1us 和 2us,乘法指令和除法指令为 4us。

1.2.3  存储器

8051 系列单片机的存储器结构特点之一是将程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式。这种结构的的单片机称为哈佛结构单片机。该结构与通用微机的存储器结构不同。一般微机只有一个存储器逻辑空间,可随意安排 ROM 或 RAM,访问时用同一种指令。这时结构称为普林斯顿型。

8051 系列单片机在物理上有 4 个存储空间:片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器。

8051 系列单片机内有 256 字节数据存储器 RAM 和 4KB 的程序存储器 ROM。除此之外,还可以在片外拓展 RAM 和 ROM,并且各有 64KB 的寻址范围,也就是最多可以在外部拓展 2x64KB 存储器。

8051 来说,如EA引脚为高电平,复位后先执行片内程序存储器中的程序,当程序计数器 PC 中内容超过 0x0FFF(对 51 子系列)或 0x1FFF(对 52 子系列)时,将自动转去执行片外程序存储器中的程序;对于片内无程序存储器的 8031、8032,EA 引脚应保持低电平,使其只能访问片外程序存储器。

对于有片内程序存储器的芯片,如EA引脚接低电平,将强令执行片外程序存储器中的程序。此时多在片外程序存储器中存放调试程序,使计算机工作在调试状态。那么这时就要注意:片外程序存储器存放调试程序的部分,其编址与片内程序存储器的编址是可以重叠的,借EA引脚的换接可实现分别访问。

二者,都能自程序存储器的任一单元取指执行或访问取数(常数),不会混乱。

下图为 51 子系列的存储器编址图,程序存储器编址如图 1-2-4,数据存储器如图 1-2-5。

 

1-2-4

 

1-2-5

64KB 的程序存储器(ROM)空间中,有 4KB 地址区对于片内 ROM 和片外 ROM 是公用的。这 4KB 地址为 0000H~0FFFH;而 1000H~FFFFH 地址区为外部 ROM 专用。CPU 的控制器专门提供一个控制信号通过EA引脚来控制EA用来区分内部 ROM 和外部 ROM 的公用地址区:当EA引脚接高电平时,单片机从片内 ROM的 4KB 存储区取指令,而当指令地址超过 0FFFH 后,就自动地转向片外 ROM 指令;当EA引脚为低电平时 ,CPU 只从片外 ROM 取指令。这种接法特别适用于 8031 单片机的场合,由于 8031 内部不带 ROM,所以使用必须EA引脚置 0,以便直接从外部 ROM 中取指令。

程序存储器的某些单元是保留给系统使用的:0000H~0002H 单元是所有执行程序的入口地址,即单片机上电后,CPU 总是从 0000H 单元开始执行地址;0003H~002BH 单元均匀地分为 5 段,用做 5 个中断服务函数的入口地址如表 1-2-4,用户程序不应进入上述区域。

中断源

入口地址

外部中断 0

0003H

定时器/计数器 0 溢出

000BH

外部中断 1

0013H

定时器/计数器 1 溢出

001BH

串行口

0023H

定时器/计数器 2 溢出或 T2EX 端负跳变(仅 8032 、8052 用)

002BH

数据存储器 RAM 也有 64KB 寻址区,在地址上与 ROM 是重叠的。8051 通过不同的信号来选通 ROM 或RAM:当从外部 ROM 取指令时,用选通信号PSEN;而当从外部 RAM 读写数据时,采用读写信号RD或WR来选通,因此,不会因为地址重叠而出现混乱。

8051 的 RAM 虽然字节数不很多,但却起着十分重要的作用。256 字节被划分为两个区域:00H~7FH是真正的RAM区,可以读/写各种数据;而80H~FFH是专门用于特殊功能寄存器(SFR,Special FunctionRegister)的区域。对于 8051 安排了 21 个特殊功能寄存器;对于 8052 则安排了 26 个特殊功能寄存器。每个寄存器为 8 位,即一个字节,所以实际上 128 自己没有全部利用。

51 子系列单片机片内 RAM 共分为工作寄存器区、位寻址区、数据缓冲区器三个区域。

工作寄存器也称作通用寄存器,供用户编程时使用,临时保存 8 位信息。

位寻址就是每一位都被赋予了 1 个位地址,有了位地址就可以位寻址,对特定位进行处理、内容传送或据以判条,给编程带来极大的方便。

数据缓冲区即用户 RAM 区。

片内数据存储器如表 1-2-5。

片内数据存储区域

占用地址

工作寄存器区

工作寄存器 0

 00H~07H

工作寄存器 1

 08H~0FH

工作寄存器 2

 10H~17H

工作寄存器 3

 18H~1FH

位寻址区

20H~2FH

数据缓冲区

 30H~7FH

 

对于 128 字节 RAM 的 8051 系列单片机来说,真正让用户使用的 RAM 只有 80 自己,即 30H~7FH。对于 8052 单片机来说,片内多安排了 128 字节 RAM 单元,地址也为 80H~FFH,与特殊功能寄存器区域地址重叠,但在使用时,可以通过指令加以区别。

特殊功能寄存器也称专用寄存器,专用于控制、管理片内算路逻辑部件、并行 I/O 口,串行I/O 口、定时器/计数器、中断系统等功能模块的工作,用户编程时可以置数设定,却不能将该寄存器另作他用。在 51 系列单片机中,将各专用寄存器(程序计数器 PC 例外)与片内 RAM 统一编址的,又可以作为直接寻址字节。特殊功能寄存器地址分配如表 1-2-6。

1-2-6

特殊功能寄存器

符号

地址

P0

P0

80H

堆栈指针

SP

81H

数据指针低字节

DPL

82H

定时器/计数器控制

TCON

88H

定时器/计数器方式控制

TMOD

89H

定时器/计数器 0 低字节

TL0

8AH

定时器/计数器 1 低字节

TL1

8BH

定时器/计数器 0 高字节

TH0

8CH

定时器/计数器 1 高字节

TH1

8DH

P1

P1

90H

电源控制

PCON

97H

串行控制

SCON

98H

串行数据缓冲器

SBUF

99H

P2

P2

A0H

中断允许控制

IE

A8H

P3

P3

B0H

中断优先级控制

IP

B8H

定时器/计数器 2 控制

T2CON

C8H

定时器/计数器 2 自动重装载低字节

RLDL

CAH

定时器/计数器 2 自动重装载高字节

RLDH

CBH

定时器/计数器 2 低字节

TL2

CCH

程序状态字

PSW

D0H

累加器

A

E0H

B 寄存器

B

F0H

 

1.2.4  并行接口

MCS-51 系列单片机有 32 根输入/输出线,组成 4 个 8 位并行输入/输出接口,分别为 P0 口 、P1 口、P2 口、P3 口。这 4 个接口可以并行输入或输出 8 位数据,也可以按位使用,即每一根输入/输出线都能够独立地用作输入或输出。

4 个口的差别就是 P0、P2、P3 都还有第二功能的,而 P1 口只能作普通的 I/O 口来使用 。

详细描述请看“第二章 STC89C52RC 处理器 2.4 管脚小节”。

 

1.3   8051  系列单片机内部资源

1. 定时器/ / / / 计数器

8051 系列单片机至少有两个 16 位内部定时器/计数器(T/C,Timer/Counter),提供了 3 个定时器,其中两个基本定时器/计数器分别是定时器/计数器 0(T/C0)和定时器/计数器 1(T/C1)。它们既可以编程为定时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计数输入引脚的脉冲信号,则它是计数器。

2. 串行口

串行收/发存储在特殊功能寄存器的 SBUF(串行数据缓冲器),从表 1-2-6 可以知道,SBUF占用 RAM 地址为 99H。实际上在单片机内部有两个数据缓冲器:发送缓冲器和接收缓冲器,它们都以 SBUF 来命名,只根据对 SBUF 特殊功能寄存器读/写操作,单片机会自动切换发送缓冲器或接收缓冲器。

SBUF=0x01,该操作为写操作,数值 0x01 会被装载到发送缓冲器。

Tmp=SBUF,该操作为读操作,接收缓冲器的内容会被赋值给 Tmp 变量。

3. 中断系统

8051 系列单片机中断系统的功能有 5 个(52 子系列为 6 个)中断源,2 个中断优先级,从而实现二级中断嵌套,每一个中断源的优先级可由程序设定。与中断系统工作有关的特殊功能寄存器有中断允许控制寄存器 IE、中断优先级控制寄存器 IP 以及定时器/计数器控制寄存器 TCON等。

手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页