MCS-51 单片机的硬件结构

发布者:温馨的家庭最新更新时间:2022-12-12 来源: zhihu关键字:MCS-51  单片机  硬件结构 手机看文章 扫描二维码
随时随地手机看文章

MCS-51基本构成

Ø CPU :8位

Ø 存储器:128字节RAM;4K字节ROM存储器

Ø 并行口:4个8位并行口

Ø 串行口:1个全双工的串行口

Ø 21个专用特殊功能寄存器

Ø 定时器/计数器:2个16位的定时器/计数器

Ø 中断系统:5个中断源,两个中断优先级

Ø 寻址范围: 64K字节(程序存储区和外部数据存储区各64K)

即MCS-51是8位单片机,有40个管脚,8根数据线,16根地址线。通常称为八大基本组成部分:CPU 、ROM、RAM、I/O 、定时/计数器、串口、SFR、中断服务系统。备注:其中特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。


一、中央处理器(CPU):单片机的核心部分,是单片机的指挥和执行部件。 由运算器和控制器所构成,CPU内部没有单独的存储器,而是设置了一些工作寄存器,暂存数据和状态等。

1 . 运算器:对操作数进行算术、逻辑运算和位操作,存储运算结果并作相应标记。

1.1算术逻辑运算单元ALU

1.2累加器A :使用最频繁的寄存器,可写为Acc。

A的作用:(1)是ALU的输入之一,又是运算结果的存放单元。(2)数据传送大多都通过累加器A。MCS-51增加了一部分可以不经过累加器的传送指令,即可加快数据的传送速度,又减少A的“瓶颈堵塞”现象。

A的进位标志Cy同时又是位处理机的位累加器。

1.3程序状态字寄存器PSW

(1)Cy(PSW.7)进位标志位

(2)Ac(PSW.6) 辅助进位标志位,用于BCD码的十进制调整运算。

(3)F0(PSW.5)用户使用的状态标志位。

(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。

RS1 RS0 所选的4组寄存器

0 0 0区(内部RAM地址00H~07H)

0 1 1区(内部RAM地址08H~0FH)

1 0 2区(内部RAM地址10H~17H)

1 1 3区(内部RAM地址18H~1FH)

通用寄存器

(5)OV(PSW.2)溢出标志位 :指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂。

(6)PSW.1位: 保留位,未用

(7)P(PSW.0)奇偶标志位

P=1,A中“1”的个数为奇数

P=0,A中“1”的个数为偶数

1.4 寄存器B:主要用于乘、除运算。寄存器B也可作为一般的寄存器用。

2. 控制器:控制计算机各部分协调工作。

2.1程序计数器PC(Program Counter):存放下一条要执行的指令在程序存储器中的地址。PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,即地址空间为0000~0FFFFH。基本工作方式有以下几种:

(1)程序计数器自动加1 ,从而实现程序的顺序执行。

(2)执行有条件转移或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。

(3)在执行调用子程序调用或中断调用,完成下列操作:① PC的现行值保护② 将子程序入口地址或中断向量的地址送入PC。


2.2数据指针DPTR:数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。DPH 为DPTR的高八位寄存器,DPL 为DPTR的低八位寄存器。

2.3堆栈指针SP:SP为8位寄存器,用于指示栈顶单元地址。堆栈是一种数据结构,只允许在其一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。堆栈的最大特点是“后进先出”的数据操作原则。

基本操作:(1)进栈:使SP的内容增1后作数据压入操作;(2)出栈:先把栈顶的数据弹出,然后使SP的内容减1。 (先进后出)

堆栈的功用:堆栈的主要功用是保护断点和保护现场。因为计算机无论是执行中断程序还是子程序,最终要返回主程序,在转去执行中断或子程序时,要把主程序的断点保护起来,以便能正确的返回。同时,在执行中断或子程序时,可能要用到一些寄存器,需把这些寄存器的内容保护起来,即保护现场。

Ø堆栈的设置:MCS—51系列单片机的堆栈通常设置在内部RAM的30H~7FH之间。

Ø堆栈指示器SP:SP为8位寄存器,用于指示栈顶单元地址。由于SP的内容就是堆栈“栈顶”的存贮单元地址,因此可以用改变SP内容的方法来设置堆栈的初始位置。当系统复位后,SP的内容为07H,但为防止数据冲突现象发生,堆栈最好设置在内部RAM的30H~7FH单元之间,例如使(SP)=30H。

2.4指令寄存器、译码器、定时

指令寄存器(IR):存放所取出的指令;指令译码器(ID):对指令进行译码;定时和控制电路:根据指令发出时序控制信号。

指令执行过程的基本概念

指令:是计算机执行某种操作的命令。指令通常由操作码和操作数两部分组成。操作码:表示计算机执行什么具体操作。操作数:表示参加操作的数或操作数所在的地址。程序:为完成某项工作,将一系列指令有序地组合。

三、MCS-51的片外总线结构

总线:是用来传送信息的一组导线,它为CPU和其他部件之间提供数据、地址、和控制信息的传输通道。一般包括:(1)地址总线AB:用来传送地址信息。地址总线是由CPU出发的,因而是单向的。地址总线的位数决定了CPU可直接寻址的内存范围。(2) 数据总线DB:用于传送数据信息。数据既可以从CPU传送到存储器或输入输出接口,也可以从存储器或输入输出接口传送到CPU,因而是双向的。(3)控制总线CB:用于传送控制信号。一种是有CPU发出到存储器或输入输出接口,一种是有输入输出接口发送到CPU的控制信号。

地址总线AB:宽度为16位;因此,外部存储器直接寻址为64k字节。16位地址总线中,有P0口经地址锁存器提供低8为地址A0-A7,P2口直接提供高8位地址A8-A15。

数据总线DB:宽度为8位,由P0口提供。

控制总线CB:由P3口的第二功能状态和4根独立控制线组成。

四、存储器结构:


单片机结构有两种类型:一种是程序存储器与数据存储器分开的形式,即哈弗结构; 另一种是通用计算机广泛使用的程序存储器和数据存储器合二为一的结构,冯诺依曼结构。冯诺依曼结构是在哈佛结构之后提出的,冯诺依曼提出“代码本身也是一种数据”,解决了哈佛结构的一个问题——总线暂用资源太多。MCS-51存储器的结构:哈佛(Har-vard)结构 。

关于存储器相关知识:储存二进制信息的数字电路器件。存储器包括主存储器和外存储器。外存储器(外存)指各种大容量的磁盘存储器、光盘等。存储器(内存)指能与CPU直接进行数据交换的半导体存储器。半导体存储器:按读、写功能可以分为随机读/写存储器RAM和只读存储器ROM。随机读/写存储器RAM在断电后再通电时,原存的信息全部丢失。它主要用来存放临时的数据和程序。只读存储器ROM在使用时,只能读出信息,而不能写入,且在断电后ROM中的信息仍然保留。它主要用来存放固定不变的程序和数据。

存储单元的基本单位是Byte,1B = 8bit , 1024(210)B = 1KB, 1024K(220)B =1MB, 1024M(230)B = 1GB , 1024G(240)B = 1TB 。

1、只读存储器ROM分类:(1)掩膜ROM:其存储的信息在制造过程中采用光刻工艺生成,一旦出厂,信息就不可改变。(2)可编程只读存储器 PROM:其存储的信息可由用户通过特殊手段一次性写入,但只能写入一次。(3)可擦除只读存储器:其存储的信息用户可以多次擦除,并可用专用的编程器重新写入新的信息。可擦除只读存储器又可分为紫外线擦除的EPROM、电擦除的EEPROM和Flash ROM。

MCS-51存储器空间可划分为5类:(1)程序存储器空间:8031无内部程序存储器。 (2)内部数据存储器空间。(3)特殊功能寄存器SFR-Special Function Register。(4)位地址空间: 211个可寻址位。(5)外部数据寄存器空间:片外可扩展64K字节RAM。

ROM主要用来存放程序、表格、常数;RAM主要用来存放变量、原始数据、中间数据、运算结果;

MCS-51机的内存结构

程序存储器 :存放应用程序和表格之类的固定常数。分为片内和片外两部分,由EA*引脚上所接的电平确定。程序存储器中的0000H地址是系统程序的启动地址。

当单片机的EA引脚为1: 同时使用片内外的ROM。若程序计数器PC的值在4KB(0000H~0FFFH)范围内,CPU访问片内ROM,执行片内ROM中的程序;若PC的值大于0FFFH(0FFFH~FFEFH),CPU将自动访问片外ROM。

单片机的EA引脚为0: 只使用片外ROM,丢弃片内ROM。CPU的所有取指令操作均访问片外ROM,这是片外ROM从0000H开始编址。

在程序存储器中,有6个地址单元被保留用于某些特定地址

问题:单片机复位后,程序计数器PC的内容为0000H,即系统从0000H单元开始执行程序。然而,由于0003H单元被保留,不能存放用户程序。我们怎么存放大量的程序?

解决的方法:所以,一般在0000H~0002H单元,存放一条无条件转移指令(类似goto),从而程序可从转移后的地址开始存放。这样,CPU复位后,PC可以从0000H起始地址跳转到用户程序去执行。

2、数据存储器 (RAM):用于存放数据、运算的中间结果和标志等,128个位寻址,字节地址为00H~7FH。

片内数据存储器:8位地址,共256个字节存储单元。对片内RAM使用MOV指令访问;

片外数据存储器:16位地址,最大可扩展至64K字节;对片外RAM使用MOVX指令访问;

其中00H~1FH为通用工作寄存器区,分为4组,每组8个工作寄存器R0~R7,每个寄存器一个字节。在任一时刻,CPU只能使用其中一组通用寄存器,称为当前通用寄存器组。由程序状态寄存器PSW中RS1,RS0位的状态组合来确定。通用寄存器为CPU提供了就近存取数据的便利,提高了工作速度,也为编程提供了方便。

片内数据存储器的低128字节

00H~1FH:32个单元,是4组通用工作寄存器区

20H~2FH:16个单元,可进行128位的位寻址

30H~7FH:用户RAM区,只能进行字节寻址,用作数据缓冲区以及堆栈区。

20H~2FH为位寻址区。16个字节共128位,每一位都分配一个8位地址,称为位地址,其范围是00H~7FH。位寻址区既可作为一般的RAM区进行字节操作;也可对单元的每一位进行位操作,因此称为位寻址区,是存储空间的一部分。

30H~7FH为数据缓冲区,用来存放数据。用户堆栈一般设在这个区间。

特殊功能寄存器(SFR):片内数据存储器的高128字节,内部RAM高128单元是供给专用寄存器使用的,因此称之为专用寄存器区(也称为特殊功能寄存器区(SFR)区),单元地址为80H~0FFH。其实就是CPU对各种功能部件的控制采用特殊功能寄存器集中控制方式,共21个,有的SFR可进行位寻址。

下表是SFR的名称及其分布。其字节地址的末位是0H或8H。

外部数据存储器,最多可外扩64K字节的RAM或I/O 。 使用各类存储器,注意几点:

(1) 地址的重叠性

程序存储器(ROM)与数据存储器(RAM)全部64K字节地址空间重叠)。

程序存储器(ROM)与数据存储器(RAM)在使用上是严格区分的 。

(3)位地址空间共有两个区域。

(4)片外数据存储区中,RAM与I/O端口统一编址。

所有外围I/O端口的地址均占用RAM单元地址,使用与访问外部数据存储器相同的传送指令。

四、I/O口:

4个双向的8位并行I/O端口(Port) ,记作P0~P3

属于特殊功能寄存器,还可位寻址。

P0端口

P0口某一位的电路包括:

(1) 一个数据输出锁存器,用于数据位的锁存

(2) 两个三态的数据输入缓冲器。

(3) 一个多路转接开关MUX,使:P0口可作通用I/O口,或地址/数据线口。

(4) 数据输出的驱动和控制电路,由两只场效应管(FET)组成,上面的场效应管构成上拉电路。

P0口传送地址或数据时,CPU发出控制信号为高电平,打开上面的与门,使多路转接开关MUX打向上边,使内部地址/数据线与下面的场效应管处于反相接通状态。此时输出驱动电路由于上下两个FET处于反相,形成推拉式电路结构,大大提高负载能力。

P0口作通用的I/O口使用。这时,CPU发来的“控制”信号为低电平,上拉场效应管截止,多路转接开关MUX打向下边,与D锁存器的Q*端接通。

(1) P0作输出口使用

来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。

注意:由于输出电路是漏极开路(因为这时上拉场效应管截止),必须外接上拉电阻才能有高电平输出。

(2) P0作输入口使用区分“读引脚”和“读锁存器”。

“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;

“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。

P1端口

字节地址90H,位地址90H~97H。

P1口只作通用的I/O口使用,在电路结构上与P0口有两点区别:

(1)因为只传送数据,不再需要多路转接开关MUX。

(2)由于P1口用来传送数据,因此输出电路中有上拉电阻,这样电路的输出不是三态的,所以P1口是准双向口。

因此:

(1)P1口作为输出口使用时,外电路无需再接上拉电 阻。

(2)P1口作为输入口使用时,应先向其锁存器先写入 “1”,使输出驱动电路的FET截止。

五、定时器/计数器/时序

时序的基本概念

ü计算机的工作过程就是不断执行指令的过程。CPU每执行一条指令,都要进行取指令、译码、执行指令。这些操作都必须按照时间节拍一步步地顺序完成。

ü人们把CPU执行一条指令的各个操作所对应的脉冲信号遵循的时间顺序称为时序。时序严格地规定了单片机内部以及与外部各功能部件相互配合协调工作的时空关系。

ü时序图:直观展现CPU的时序。把执行一条指令时对应信号线上有关信息的变化按时间序列以特定的波形表示出来。

按指令的执行过程,定义了四种周期:

ü振荡周期:为单片机提供定时信号的振荡源的周期;

ü时钟周期:振荡脉冲二分频,又称为状态周期S;

ü机器周期:完成一个基本操作(如取指令、读存储器等)所需要的时间称为机器周期。机器周期由6个状态周期(12个振荡周期)组成。

ü指令周期:CPU执行一条指令所需要的时间,可包含1~4个机器周期。

六、复位电路

计算机在启动运行时都需要复位,使CPU和系统中的其他部件都处在一个确定的初始状态,并从这个状态开始工作。只要在MCS-51单片机的RST引脚输入24个振荡周期(即2个机器周期)以上的高电平,单片机即被复位。复位是单片机系统的初始化操作,系统复位后会对专用寄存器和单片机的个别引脚信号有影响,复位后对一些专用寄存器的影响情况如下:

(PC)=0000H:系统复位后,使单片机从0000H单元开始执行程序。

(SP)=07H:单片机自动把堆栈的栈底设置在内部RAM 07H单元,从08H单元开始存储数据。


其余的专用寄存器在复位后都全部清“0”。此外,复位操作还对单片机的个别引脚信号有影响,如把ALE和PSEN信号变为无效状态,即ALE=1,PSEN=1。复位操作对内部RAM不产生影响。


关键字:MCS-51  单片机  硬件结构 引用地址:MCS-51 单片机的硬件结构

上一篇:MCS-51单片机指令系统(1)
下一篇:详解上拉电阻的定义,作用与选值

推荐阅读最新更新时间:2024-11-11 11:13

新手如何入门新塘N76E003单片机
第一个问题,究竟要玩哪一个芯? 今年真是变幻莫测的一年,芯片的真是流水账的价格,一天一个样,翻翻自己的抽屉,一堆的板卡,不知玩弄哪一个,一直想玩弄一下新塘的片子,可惜论坛没怎么做过新塘的开发板评测活动(也有可能做过,可能我只是一个新人),看到很多项目都用N76E003这个片子,今天就来研究一下,给大家一个提示哈,别指望我写太深的东西! 先来介绍一下新塘官方的样板:NuTiny-SDK-N76E003,究竟长什么样子,看下面的图就知道了,有一种一份为二的冲动,的确有时候也可以这么玩,设计的初衷就是让你掰着玩的。 板卡长这样(虽然我没有) 这块板卡我虽然没有具体用过,也没有拿到新塘官方的样板,但是这颗Target Ch
[单片机]
新手如何入门新塘N76E003<font color='red'>单片机</font>
怎样才能学好单片机
先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学
[单片机]
基于STM32F105微控制器的双CAN冗余的方案设计
控制器局域网( Contro llerA reaN etwo rk, CAN)是一种多主方式的串行通讯总线。CAN 总线具有较高的位速率, 很强的抗电磁干扰性, 完善的错误检测机制, 在汽车、制造业以及航空工业领域中得到广泛应用 。由于船舶机舱环境极为恶劣, 且船舶航行过程中维修条件不如陆上, 对CAN 通信的可靠性要求很高, 采取双CAN 冗余总线提高通信可靠性。本文提出一种基于STM32F105微控制器的双CAN 冗余设计方案。   1 硬件平台组成   STM32F105是STM icroe lectron ics公司推出的一款基于ARM Co rtex- M3内核的32位微控制器, 其内核是专门设计于满足高性能、低功
[单片机]
基于STM32F105<font color='red'>微控制器</font>的双CAN冗余的方案设计
单片机的高级语言编程FranklinC51简介
一、变量的定义原则: 其一、总是使用尽可能最小的数据类型; 对8位机,显然对 char 类型的对象的操作比对 int 或 long 类型的对象方便得多。C51编译器直接支持所有字符操作。例如:两个 char 类型对象相乘与 MUL AB 8051指令相符合。如果用 int 型完成同样运算,则需要调用库函数。 其二、只要有可能,使用 unsigned 数据类型。 8051系列单片机不直接支持有符号数的运算,为此,编译器必须产生与之相关的更多的代码以解决问题。若使用无符号数据类型,产生的代码要少得多。 在头文件reg51.h中有8051所有SFR及可位寻址位的定义,如: #include //源文件开始写 // . P1=0x10;
[单片机]
基于ARM单片机的高精度电子秤设计与实现
1、系统框图简介 当秤盘上放入被秤物体后,电阻应变片受重力的影响产生形变,电阻值发生变化。应变片搭建的桥式电路会输出微弱的电压信号,微弱电压信号由HX711内部集成放大器放大后经过内部ADC进行采样转换后送到到MCU,接收到的数据信息经过线性拟合处理后送到LCD液晶显示。系统能完成称重、设置单价计算金额及金额累加、去皮及去皮范围限制等基本功能,还能实现时间、温度、报警、二维码支付等扩展功能。系统总体框图如图1所示。 图1:系统总体框图 2、理论分析与计算 2.1、电桥驱动电路分析 图2:差动全桥测量电路 如图2所示当被测负载作用在弹性臂梁上使其发生弹性形变;通过粘性物质使粘贴在感压装置上的电阻应变片发生形变,从而转化成
[单片机]
基于ARM<font color='red'>单片机</font>的高精度电子秤设计与实现
ATmeg16单片机+LCD12864温度检测显示程序(并行控制,不带字库)
LCD12864温度检测显示程序(ATmega16) 制作出来的实物图如下: 单片机源程序如下: /*--------------------------------------------------------------- ATmega64并行控制不带字库的12864程序 --------------------------------------------------------------- 实验内容:LCD12864 --------------------------------------------------------------- 硬件连接: LCD12864 --------
[单片机]
ATmeg16<font color='red'>单片机</font>+LCD12864温度检测显示程序(并行控制,不带字库)
STC12C2052及11/10xx系列单片机通用EEPROM测试程序
近日研究STC12C2051的EEPROM的应用,发现官方只给出其汇编语言版本的程序。只有其公司最新推出的STC11/10xx系列的单片机有EEPROM的C语言测试程序。在网上搜索未果后,便自己动手修改,并将STC12C2052系列和STC11/10xx系列单片机的EEPROM测试程序整合起来,制作了一个适用性更好的程序。经在STC12C2052单片机硬件上测试正常,特此与大家分享! /********************************************************************************************* 程序名:STC系列单片机内部EEPROM 测试程序 编写人:杜
[单片机]
单片机LCD12864滚动和反白显示图片
本任务是用单片机实现液晶显示演示效果如图所示。通过编程,学会在单片机上实现液晶显示控制方法,以及不同数据显示的程序编写方法。 单片机源程序如下: #include LCD_12864.h #include stdio.h extern void cls(); extern uchar LCD_Initialise(); extern uchar LCD_Write_Command(uchar cmd); extern uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2); extern uchar LCD_Write_Data(uchar dat);
[单片机]
<font color='red'>单片机</font>LCD12864滚动和反白显示图片
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved