单片机原理与应用以及C51编程技术——硬件体系结构梳理(上)

简介: 单片机原理与应用以及C51编程技术——硬件体系结构梳理(上)

一、单片机的结构原理


1.1 主要性能和特点


1.内部程序存储器ROM :4K的flash程序存储器;

2.寄存器区:4个寄存器区,每个区有R0-R7八个工作寄存器;

3.8位并行输入输出端口:P0、P1、P2和P3;

4.定时/计数器:2个16位的定时/计数器 T0、T1;

5.串型口:全双工串行端口(RXD:接收端、TXD发送端);

6.中断系统:设有5个中断源(T0、T1、Int0、Int1、ES);

7.系统扩展能力:可外接64K的 ROM 和64K的 RAM;

8.堆栈:设在RAM单元、位置可以浮动(通过指针SP来确定堆栈在RAM中的位置)系统复位时SP=07H;

9.布尔处理机:配合布尔运算的指令进行各种逻辑运算;

10.指令系统:111条指令。按功能可分为数据传送、算术运算、逻辑运算、控制转移和布尔操作5大类。


1.2 内部框图


0a2653c851af460fa595bd959398a8f1.png


1.3 CPU


CPU由运算器和控制器两部分组成,主要完成取指令、指令译玛、发出各种操作所需的控制信号,使单片机各个部分协调工作。


1.3.1 运算器


运算器是以算术逻辑单元ALU为核心,加上累加器A、寄存器B、程序状态字PSW及专门用于位操作的布尔处理机等组成的,它可以实现数据的算术运算、逻辑运算、位变量处理和数据传送等操作。


1.3.2 控制器


控制器是单片机的控制中心,它包括定时和控制电路、指令寄存器、指令译码器、程序计数器PC、堆栈指针SP、数据指针DPTR以及信息传送控制部件等。


它先以振荡信号为基准产生CPU的时序,从ROM中取出指令到指令寄存器,然后在指令译码器中对指令进行译码,产生指令执行所需的各种控制信号,送到单片机内部的各功能部件,指挥各功能部件产生相应的操作,完成指令对应的功能。


1.4 几个主要的特殊功能寄存器SFR说明


1.4.1 程序指针PC


1.为CPU指明将要执行的指令地址,(存放下一条指令的地址)。长度为16位,所以寻址范围为0-65535(64K)。

2.单片机在复位时PC=0000H,这就意味着一旦将单片机复位,CPU就从ROM的0000H单元执行程序。

3.在物理上是独立于SFR。


1.4.2 累加器A


最常用的寄存器。所有的算术运算指令所要使用的寄存器且运算结果都存放在A中。


1.4.3 寄存器B


乘、除法指令专用的寄存器,当然也可作为一般的工作寄存器使用。


1.4.4 数据指针DPTR


1.由两个8位寄存器构成。高八位寄存器DPH和低八位寄存器DPL构成16位的寄存器DPTR。

2.DPTR主要用来存放外部数据存储器RAM的地址,作为CPU访问外部RAM的数据指针;

3.CPU的查表指令使用DPTR提供ROM中表格的首地址;

4.在MCS-51单片机中,CPU访问外部RAM中的数据或ROM中的表格、常数必须借助DPTR做指针来实现数据的读取访问。


1.4.5 程序状态字PSW


0a2653c851af460fa595bd959398a8f1.png

8位寄存器,表征程序执行的状态信息。


介绍

1.CY(PSW.7)进位标志:

在加减法运算中,累加器A的最高位D7有进位,则CY=1,否则CY=0。同理,在减法运算中,如果A7有借位,则CY=1.因此CY往往作为无符号数运算是否有溢出的标志。

2.AC(PSW.6)辅助进位位:

用来判断加减法运算时,低四位是否向高四位进位或借位(既A3的进位或借位)。往往用来处理压缩的BCD码的运算处理。

3.F0(PSW.5) 用户标志位:

完全由用户来定义和使用。

4.RS1,RS0工作寄存器区选择位:

补充:寄存器区:4个寄存器区,每个区有R0-R7八个工作寄存器;

确定工作寄存器R0-R7在4个区中的位置(单片机在复位后RS1、RS0=00 — 选择0区)。可以通过修改RS1,RS0的值来改变工作寄存器区的选择。

5.OV(PSW.2)溢出标志位

判断有符号数运算时是否有溢出。

OV的结果可以用一个算法来表示: OV=CP异或CS

其中:CP为A7的进位,CS为A6的进位OV=1表明有溢出。

百度解释:溢出标志位:对于单字节的有符号数,若用最高位(b7)表示正、负号,则只有7位有效数位(b6~b0),能表示-128~+127之间的数。运算结果超出了这个数值范围,就会发生溢出,此时OV=1,否则OV=0。

6.P(PSW.0)奇偶标志位:

用来标志累加器A中运算后“1”的个数。

当P=1时,表明A中1的个数为奇数个,反之为偶数个。

例子


0a2653c851af460fa595bd959398a8f1.png


1.4.6 堆栈指针SP


SP 堆栈指针:8位寄存器,用来指示堆栈的位置,可由软件修改。


堆栈的介绍

堆栈是一种按“先进后出”规律操作的存储结构。不同类型的处理器其堆栈的设计各不相同:


SP寄存器作为堆栈指针。这种结构的特点是充分的利用RAM的空间,使堆栈的空间得以扩大。但它也有一种“致命”的弱点:数据很容易与堆栈发生冲突,特别是初学编程者。

为了避免上述问题的出现,编程者往往在程序的开始加上一条指令: MOV SP,60H 试分析为什么?


百度解释:

单片机复位后SP的值一般要用一条指令赋值为60H,这只是个别人写程序的爱好与习惯罢了,没有任何规定必须是赋值60H,更没有任何原因必须选60H。

就单片机复位后,SP=07H,不用重新赋值也是可以的,否则,为什么当初设计者会这么设计呢。由于51单片机的堆栈是向上增长的,所以,为了避免堆栈区与用户数据区互相影响,才将SP设置在60H以后,比较合理的是赋值为6FH,这样堆栈区可用70H~7FH,预留有16个单元足够,也不浪费。


堆栈的作用

①保护程序的断点地址(既返回地址);

②保护数据(也称保护现场)。


堆栈操作的两种方式

①断点地址的保护是靠执行子程序调用指令或发生中断调用时,由硬件自动实现断点地址的进栈保护;在子程序或中断服务程序返回时有RET或RETI指令实现恢复断点;

②而对于其它需要保护的数据都要由专用的指令PUSH或POP来实现进栈保护或恢复。


二、单片机的存储器结构


1.程序存储器ROM要掌握的要点是:6个特定的入口单元;

2.数据存储器RAM要掌握的要点是:内部结构(包括寄存器区、堆栈区、位寻址区和特殊功能寄存器SFR区)。

① 内部集成了4K的程序存储器ROM;

② 内部具有256B的数据存储器RAM;

③ 可以外接64K的程序存储器ROM和数据存储器RAM。

从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。

从逻辑上讲(既编程的角度),51单片机的存储系统实际上分为三个存储空间。

1. 片内数据存储器RAM;

2. 片外数据存储器RAM;

3. 片内或外的程序存储器ROM(由EA电平决定)。

结构图:

0a2653c851af460fa595bd959398a8f1.png


2.1 程序存储器ROM(片内、片外)


1.程序存储器ROM用于存放程序、常数或表格。


2.在51单片机中,由引脚 /EA 上的电平选择内、外ROM;

EA=1时,CPU执行片内的4KROM中的程序;

EA=0时,CPU选择片外ROM中的程序。


3.无论是使用片内还是使用片外ROM,程序的起始地址都是从ROM的0000H单元开始。


4.尽管系统可以同时具备片内ROM和外部ROM,但是在一般正常使用情况下,通过/EA的设定来选择其一(或者使用内部ROM,或者使用外部ROM)。


5.如果EA=1(执行片内程序存储器中程序时):

如果程序计数器的指针PC值超过0FFFH(4K)时,单片机就要自动的转向片外的ROM存储器且从1000H单元开始执行程序(无法使用片外ROM的低4K空间)。


0a2653c851af460fa595bd959398a8f1.png0eacb84100b54626af849e6b562bf92a.png


2.1.1 程序存储器六个特殊的单元


0000H单元:复位时程序计数器PC所指向的单元,因此用来 存放程序中的第一条指令;

0003H单元:外部中断/INT0的矢量入口地址;

000BH单元:定时器T0溢出中断的矢量入口地址;

0013H单元:外部中断/INT1的矢量入口地址;

001BH单元:定时器T1的溢出中断矢量入口地址;

0023H单元:串行口接收、传送的中断矢量入口地址。

矢量入口单元:在编写中断程序时,写入对应的“跳板指令”。


0a2653c851af460fa595bd959398a8f1.png


因为在复位时,程序指针PC指向0000H


2.1.2 外部程序存储器


当单片机使用外ROM存储器时(扩展系统),必须设定/EA=0,此时单片机的端口功能就要发生相应的改变:

① P0、P2作为外部ROM的地址和数据总线;

② 使用引脚/psen信号来选通外部ROM的数据三态输出。


0eacb84100b54626af849e6b562bf92a.png


2.2 数据存储器RAM


无论在物理上还是逻辑上,系统中RAM 都可分为两个独立空间:内部和外部RAM。由不同的指令来访问。


1.访问内部数据存储单元时,使用 MOV 指令;

2.访问外部数据存储器时,使用 MOVX 指令。


内部RAM从功能上将256B空间分为二个不同的块:


1.低128B的RAM块;

2.高128B的SFR(Special Function Register )块。


在低128B的RAM存储单元中又可划分为:


1.工作寄存器区;

2.位寻址区;

3.通用存储数据的“便签区”。

高128B的专用寄存器区SFR中仅仅使用了21寄存器(51系列),其它107个单元不能使用。


2.2.1 AT89 片内、片外数据存储器示意图


0a2653c851af460fa595bd959398a8f1.png


2.2.2 片内RAM低128B 字节功能分配图


0eacb84100b54626af849e6b562bf92a.png


工作寄存区区结构图(0区)


2d65d23f6d4748949b924e4057485923.png


片内RAM中具有双重功能的存储结构图


2e9b90b2ca334476abebe75bafe6eeaa.png


RAM的20H~2FH的存储特点(位寻址区)

20H~2FH本身是字节地址,因此这些单元可以按照常规存储16个字节的数据。如:


1.MOV 20H,A ;将累加器A中的数据送RAM的 20H单元(字节传送操作)


2.将20H~2FH中的16*8既128个bit分别定义其位地址00H~7FH(如图),这样CPU可以按位来访问这些bit:


MOV 20H,C ;将Cy中的布尔变量送20H位地 址中(位传送)


2.2.3 特殊功能寄存器SFR


特殊功能寄存器 SFR (Special Function Register) 离散分布在256B字节中的高128B中。


1.设定单片机内部各模块的工作方式,存放相关模块的状态与标志。如定时器、串行口,并行端口和中断设置等。

2.尽管特殊功能寄存器与RAM在同一个单元中,但不能作为普通的RAM存储单元来使用。

3.在编程中根据需要,进行一些特定功能的设定,或者是从中查寻相关部件的状态时,才能对其进行读、写操作。如中断方式的设定、定时器工作模式的设定,查询串行口发送或接收是否结束等等。


0a2653c851af460fa595bd959398a8f1.png0eacb84100b54626af849e6b562bf92a.png2d65d23f6d4748949b924e4057485923.png2e9b90b2ca334476abebe75bafe6eeaa.png4cebaac233b3433da32a72337a77fc60.png


具有位地址和位名称的SFR才可以位寻址。

位地址有以下4种表示形式:

直接使用位地址表示

例如:0D7H —— PSW最高位的位地址

使用位名称表示、

例如:CY —— PSW最高位的位名称

使用SFR字节地址.位形式表示

例如:0D7H.7 —— PSW字节地址.最高位

使用SFR名称. 位形式表示

例如:PSW.7 —— PSW名称.最高位

位寻址:20H-2FH和能被8整除的SFR


相关文章
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
|
10天前
|
存储 芯片
【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)
|
15天前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
20 1
|
15天前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
21 1
|
5月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
56 0
|
5月前
|
物联网
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
46 0
|
11天前
|
传感器 安全 物联网
单片机在智能家居系统中的应用研究
单片机在智能家居系统中的应用研究
19 1