MCS-51单片机的结构组成

本文详细介绍了MCS-51单片机的内部结构,包括控制器(程序计数器PC、指令寄存器IR、指令译码器ID、数据指针DPTR)和运算器(累加器ACC、通用寄存器B、算术逻辑部件ALU、程序状态字寄存器PSW)。此外,还概述了单片机的外部引脚功能,如电源、晶振、控制和并行I/O口。MCS-51的存储器结构包括片内ROM、片内RAM、片外ROM和片外RAM,以及复位和时序机制。
摘要由CSDN通过智能技术生成

一、单片机的基本结构

1、MCS-51单片机的内部结构

MCS-51单片机的内部结构包含了作为微型计算机所必需的基本功能部件,CPU、RAM、ROM、定时器/计数器、可编程并行口和可编程串行口等。

80C51的内部资源主要包括:

1个8位中央处理器(CPU);

1个片内振荡器和时钟电路;

4KB片内程序存储器(ROM);

256字节的片内数据存储器(RAM);

2个16位定时器/计数器(T/C);

可寻址64KB程序存储空间和64KB数据存储空间的总线控制器;

4个8位双向并行I/O口;

1个全双工串行口;

5个中断源。


单片机内最核心部分的是CPU,其主要功能是产生各种控制信号、控制存储器、I/O的数据传送、进行数据运算、逻辑运算等。从功能上分为控制器和运算器两部分。

(一)控制器

其作用是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的功能

(1)程序计数器(PC)

Program Counter是一个16位专用寄存器存放着下一条要执行指令的首地址,即PC的内容决定着程序的运行轨迹。

当CPU要取指令时,PC的内容就会出现在地址总线上;取出指令后,PC的内容可自动加一,以保证程序按顺序执行。PC的内容也可通过指令修改,从而实现程序的跳转运行。

系统复位后,PC的内容会被自动赋值为 0000H。复位后 CPU 将从程序存储器的 0000H地址处的指令开始运行。

(2)指令寄存器(IR)

Instruction Register是一个8位寄存器用于暂存待执行的指令,等待译码

(3)指令译码器(ID)

Instruction Decoder是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需的电信号。根据译码器输出的信号,再经过定时控制电路产生执行该指令所需的各种控制信号。

(4)数据指针(DPTR)

Data Pointer是一个16为的专用地址指针寄存器由两个8为寄存器DPH 和DPL拼装而成,DPH为高8位,DPL为低8位。DPTR既可作为一个16位寄存器来使用,也可作为两个独立的8位寄存器来使用

DPTR可以用来存放片内ROM地址,也可存放片外RAM和片外ROM地址,与相关指令配合实现对最高64KB片外RAM和全部ROM的访问


(二)运算器

算术逻辑部件、累加器、程序状态字寄存器及运算调整电路等组成。

为了提高数据处理速度,片内还增加了一个通用寄存器B 和一些专用寄存器与位处理逻辑电路。

(1)累加器(ACC)

Accumulator是一个8位寄存器,简称A,通过暂存器与ALU相连。

CPU工作中使用最频繁的寄存器,用来存放一个操作数或中间结果

(2)通用寄存器B

是为了配合累加器A进行乘法和除法运算而设置的,也是一个8位寄存器

除乘法和除法用途外,通用寄存器B也可作为普通寄存器使用。

(3)算术逻辑部件(ALU)

Arithmetic Logic Unit由加法器和其他逻辑电路组成,用于对数据进行四则运算和逻辑运算等。

ALU的两个操作数,一个由A通过暂存器2输入,另一个由暂存器1输入,运算结果的状态传送给PSW

(4)程序状态字寄存器(PSW)

是一个8位专用寄存器,用于存放程序运行过程中的各种状态信息。

PSW中的各位信息通常是在执行指令执行过程中自动形成的,也可由传送指令加以改变。

PSW7PSW6PSW5PSW4PSW3PSW2PSW1PSW0
CYACF0RS1RS0OVF1P
位7位6位5位4位3位2位1位0

1、CY(PSW7)进位标志位在进行加或减运算时,如果操作结果最高位有进位或错位,则CY由硬件置1,否则清零。

在进行位操作时,CY的作用相当于累加器A,也可被认为是位累加器。

2、AC(PSW6)辅助进位标志位在进行加或减运算时,如果操作结果的低4位向高4位产生仅为或错位,则AC由硬件置1,否则清零

AC位可用于BCD码调整时的判断位。

3、F0(PSW5)用户标志位由用户置位或复位,可作为用户自定义的一个状态标记

4、RS1、RS0(PSW4、PSW3)工作寄存器组指针用于选择CPU当前工作的寄存器组,可由用户程序改变RS1、RS0的组合,以切换当前选用的寄存器组

5、OV(PSW2)溢出标志位,可以指示运算过程中是否发生了溢出,由硬件自动形成。

在执行有符号数加、减运算指令过程中,累加器A中的运算结果超出了8位数能表示的范围,即-128----+127,则OV自动置1,否则清零

根据OV状态可以判断累加器A中结果是否正确

OV状态可用异或逻辑表达式算出:OV = C6y  异或  C7y (C6y 和 C7y 分别是位6 和位7 的进位或错位状态,有进位或错位时位 1 ,反之为 0 )


2、MCS-51外部引脚及其功能

MCS-51单片机的封装方式与制造工艺有关,采用HMOS制造工艺的51单片机一般采用40个引脚的双列直插封装(DIP)方式;采用CHMOS制造工艺的MCS-51单片机,还采用44个引脚的方形封装方式,其中4个脚是没用的。

80C51采用40个引脚的双列直插封装方式。

80C51引脚图

(1)电源及晶振引脚(4个):Vcc、Vss(GND)、XTAL1、XTAL2;

(2)控制引脚(4个):/PSENALE/ /PROG/EA/VppRST/VpD;

(3)并行I/O口引脚(32个):P0^0---P0^7、P1^0---P1^7、P2^0---P2^7、P3^0---P3^7

(一)电源及晶振引脚
(1)电源引脚

                  Vcc(第40脚):+5V电源引脚。

                  Vss/GND(第20脚):接地引脚。

(2)外接晶振引脚

XTAL1(第19脚)和  XTAL2(第18脚):外接晶振的引脚。


(二)控制引脚
(1)RST/VpD(第9脚),复位/备用电源引脚

复位引脚RST:该引脚输入满足复位时间要求的高电平,将使单片机复位。

备用电源VpD:在主电源在掉电期间,可利用该引脚处外界的+5V备用电源为单片机片内RAM供电,保证片内RAM信息不丢失,以便电压恢复正常后单片机能正常工作。

(2)ALE/ /PROG(第30脚),地址锁存使能输出/编程脉冲输入引脚

地址锁存使能输出ALE:当单片机访问外部存储器时,外部存储器的16位地址信号由P0口输出低8位,P2口输出高8位,ALE可用作低8位地址锁存控制信号;当不用作外部存储器地址锁存控制信号时,该引脚仍以时钟脉冲频率的1/6固定输出正脉冲。

编程脉冲输入引脚/PROG:对含有EPROM的单片机(如87C51),在进行片内EPROM编程时,需要由此输入编程脉冲。

(3)/PSEN(第29脚),输出访问片外程序存储器读选通信号引脚

CPU在从片外ROM取指令期间,该引脚 将在每个机器周期内产生两次负跳变脉冲,用作片外ROM芯片的使能信号。

(4)/EA/Vpp(第31脚),外部ROM允许访问/编程电源输入引脚

外部ROM允许访问/EA:当/EA = 1 或悬空时,CPU从片内ROM开始读取指令,当程序计数器(PC)的值超过4KB地址范围,将自动转向执行片外ROM的指令;当/EA = 0或接地时,CPU仅访问片外ROM。

编程电源输入引脚Vpp:在对含有EPROM的单片机(如87C51)进行EPROM编程时,此引脚应接+12V 编程电压。注意,不同芯片有不同的编程电压,应仔细阅读芯片使用说明


(三)并行I/O口引脚

并行I/O口共有32 个引脚,其中:

P0口为P0^0---P0^7(第39--32脚);

P1口为P1^0---P1^7(第1--8脚);

P2口为P2^0---P2^7(第21--28脚);

P3口为P3^0---P3^7(第10--17脚)。

P0--P3口都可以作为通用输入/输出(I/O)口使用。P0口和P2口还具有单片机地址/数据总线的作用,P3口具有第二功能的作用。


二、单片机的存储器结构

1、存储器划分方法

计算机存储器地址空间有两种结构形式:普林斯顿结构哈佛结构

普林斯顿结构

冯-诺伊曼结构,一种将ROM和RAM统一编址的存储器结构,位于同一存储空间的不同物理位置处,每个存储单元都对应于唯一的地址。

因指令与数据与有相同的宽度,CPU可以使用相同的指令访问ROM和RAM。X86、奔腾、ARM7等微处理器都采用这种结构。

哈佛结构

哈佛结构是一种将ROM和RAM单独编址的存储结构,位于不同的存储空间。存储单元地址不唯一。

ROM和RAM可以有相同的地址,CPU需采用不同的访问指令加以区分。有利于缓解程序运行时的访问瓶颈问题。51系列、AVR系列、Z8系列等微处理器采用这种结构。


MCS-51单片机存储器空间结构

从物理地址上看,有4个存储空间,即片内ROM 、片内RAM、片外ROM、片外RAM。

从逻辑地址上看,因片内、外ROM是统一编址的,故有3个存储空间,即片内RAM、片外RAM、ROM。

访问这三个存储空间:

汇编语言:MOV 、MOVX 、MOVC对应片内RAM、片外RAM、ROM。

C语言:data 、xdata 、code对应片内RAM、片外RAM、ROM。

MCS-51单片机的片内ROM地址空间为0000H---0FFFH(共4 KB),片外ROM地址空间为0000H---FFFFH(共64 KB),片内RAM地址空间为00H---FFH(共256 B),片外RAM地址空间为0000H---FFFFH(共64 KB)

2、程序存储器(ROM)

程序存储器主要用于存放程序代码及程序中用到的常数。在程序调试运行成功后,由编程器将程序代码写入ROM中,因只读特性,保存在ROM中的程序或数据不会因掉电而丢失。

当/EA引脚接高电平时,4KB以内的地址在片内ROM,大于4KB的地址在片外ROM,两者共同构成64KB空间。

当/EA接低电平时,片内ROM被禁止,全部64KB地址都在片外ROM中。

用户使用80C51程序长度不超过4KB,仅使用片内ROM就可以了,但/EA引脚接Vcc或使其悬空(默认为高电平)。

在80C51中有 6 个特殊地址单元专门为复位和中断功能而设计的。

(1)0000H为程序首地址,单片机复位后程序将从这个单元开始运行。一般在该单元中存放一条跳转到用户设计的主程序。

(2)0003H为外部中断0入口地址。

(3)000BH为定时器/计数器0溢出中断入口地址。

(4)0013H为外部中断1入口地址。

(5)001BH为定时器/计数器1溢出中断入口地址。

(6)0023H为串行口中断入口地址。


3、数据存储器(RAM)

数据存储器用于存放运算中间结果、标志位、待调试的程序等。RAM一旦掉电,数据将丢失。

在物理和逻辑都占有两个地址空间:片内RAM(256B)、片外RAM最大可以扩充到64KB

片内ROM可分为高128B,低128B两部分。

低128B为普通RAM,地址空间为00H-7FH;高128B为特殊功能寄存器区,地址空间为80H-FFH.

(一)低128B RAM区

(1)地址00H--1FH32个数据存储单元可作为工作寄存器。32个单元分为4组,每组8个单元,按序命名为工作寄存器R0---R7

51单片机有4个工作寄存器组,但任一时刻CPU只能选用一个工作寄存器组,不会发生冲突,未选中的3个工作寄存器组可作为一般数据存储器使用。

工作寄存器组通过程序状态字寄存器(PSW)中的RS1和RS0标志位进行设置,CPU复位后默认第0组为当前工作寄存器组。

(2)地址20H---2FH的16个单元既可像普通RAM单元一样按字节地址进行存取,又可以按位进行存取,这16个字节共有128(16*8)个二进制位,每位都分配一个位地址,编址为00H---7FH。

(3)30H---7FH地址空间80字节单元为用户RAM区,这个区只能按字节存取。在此区内,用户可以设置堆栈区和存储中间数据。

(二)高128B RAM区

在80H---FFH中,离散分布21个特殊功能寄存器。虽其中空闲单元占了很大比例,且它们进行读/写操作无意义。但这些单元是为单片机后来功能增加预留的空间。


三、单片机的复位和时序

1、单片机的复位

单片机在开机时需要复位,以便使CPU及其其他功能部件处于一个确定的初始状态,并以此为起点开始工作,单片机应用程序也必须以此状态作为出发点。

单片机在工作时出现死机,应当使其复位,摆脱死机状态。

单片机复位对片内各寄存器的状态产生影响:

产生单片机复位的条件是在RST引脚出现满足复位时间要求的高电平状态,该时间等于系统时钟振荡周期再加上2个机器周期时间(一般不小于10 ms)。

单片机的复位可以由两种方式产生上电复位方式按键复位方式

上电复位方式:在单片机上电的瞬间,RST引脚的电位与Vcc的相同。随着充电电流的减小,RST引脚的电位将逐渐下降。只要选择合适的电容和电阻,使其RC时间常数大于复位时间即可保证上电复位发生。

按键复位方式:利用电阻分压电路实现,当按键压下时,串联电阻上的分压可使RST引脚产生高电平,按键抬起时产生低电平。只要保证按键动作产生的复位脉冲宽度大于复位时间,即可发生复位。

复合复位方式:将上述两种复位电路整合在一起 。


2、单片机的时序

单片机执行指令过程可分为取指令、分析指令、执行指令3个步骤,每个步骤又可分为许多微操作组成,这些微操作必须在一个统一的时钟控制下才能按照正确的顺序执行。

单片机的时钟信号有两种方式产生:内部时钟方式 外部时钟方式

内部时钟方式:利用单片机芯片内部的振荡电路实现的,此时需要通过单片机的XTAL1 和 XTAL2 引脚外接一个用晶体振荡器和电容组成的并联谐振回路。电容C1、C2一般取30pF左右,主要作用是帮助振荡器起振,晶体的振荡范围为1.2 --- 13MHz。晶振频率越高,系统时钟的频率越高,单片机的运行速度越快。MCS-51单片机通常应用,晶振频率为6 --- 12MHz。

外部时钟方式:多个单片机组成的系统,为使各单片机之间的时钟脉冲信号严格同步,应采用公用外部脉冲信号作为各单片机的振荡脉冲。外部脉冲信号经XTAL2 引脚注入。

时序可以用状态方程、状态图、状态表、时序图。

时序是用定时单位来描述的,MCS-51单片机的时序单位有4个。时钟周期、状态周期、机器周期、指令周期

(1)时钟周期

晶振或外加振荡器的振荡周期称为时钟周期。用P表示。1时钟周期等于晶振频率的倒数。

(2)状态周期

1状态周期等于2个时钟周期。用S表示。

(3)机器周期

1个机器周期等于6个状态周期(12个时钟周期)。

(4)指令周期

执行一条指令所需要的时间称为指令周期。1个指令周期等于1---4个机器周期。


四、单片机的并行I/O口

MCS-51有4个8位的并行I/O口,分别为P0、P1、P2、P3。每个端口都包含一个同名的特殊功能寄存器、一个输出驱动器和输入缓冲器。

1、P1口

P1口的8个触发器构成了可存储8位二进制码的P1口锁存器(特殊功能寄存器P1),字节地址为90H;场效应管V与上拉电阻R组成输出驱动器,以增大P1口带负载能力;三态门1 和2 在输入和输出时作为缓冲器使用。

P1口为通用I/O口,具有输出、读引脚、读锁存器

(一)输出方式

单片机执行向P1口写数据指令时,如P1=0x12;P1口工作于输出方式。

根据D触发器的原理,由内部总线送到锁存器D端的数据,在“写锁存器”的触发信号控制下传送给 Q 端,即 Q=D。触发脉冲结束后,Q端不再跟随D端变化但仍保持先前数值不变(锁存功能)。

此后会有两种结果产生:

Q=1 → /Q=0 场效应管V因栅极的0电平而截止 → 漏极电平=Vcc → 引脚P1.n=1;

Q=0 → /Q=1 → 场效应管V因栅极的1电平而导通 → 漏极相当于对地短路 → 引脚P1.n=0。

由此可见,输出方式时,内部总线电平可以由P1口输出,也可以锁存在P1口中。

(二)读引脚方式

        当单片机执行从 P1口读数据并存到变量val指令时,如 val=P1;P1 口工作于读引脚方式。

        此时引脚P1.n电平在“读引脚”控制下经过三态门1后到达内部总线(送到 val中),

此时会有两种结果产生:

P1n.0 → val=0(与V的状态无关);

P1.n=1且V处于导通状态(例如曾执行过写0指令)→val=0。这是因为导通的V会使P1.n的电平钳制为0。
        为避免这一错误出现,只要在读引脚前先执行一条写1指令强迫V截止,引脚P1.n电平便不会再读错了,即读入内部总线的值与引脚P1.n保持一致。故P1口作为输入口是有条件的(要先写1),而作为输出口是无条件的,因此,P1口被称为准双向口。

(三)读锁存器方式

        当单片机执行“读一改一写”类指令时,如P1++;,P1口工作于读锁存器方式。

        此时在“读锁存器”控制下,Q端电平经过三态门2读入内部总线 → 在运算器中进行+1运算 → 结果重新写到Q端(同时也输出到P1.n引脚)。
        可见,读锁存器与读引脚的效果是不同的,读锁存器是为了获得前次的锁存值,而读引脚则是为了获得引脚上的当前值。

        P1口能驱动4个LSTTL负载。通常将100μA的电流定义为一个LSTTL负载的电流,所以P1口吸收或输出电流不大于400μA。P1口已有内部上拉电阻,无须再外接上拉电阻。


2、P3口

        8个D触发器构成了P3口锁存器(特殊功能寄存器P3),字节地址为B0H。与P1口相比,P3口结构中多了与非门B和缓冲器T。P3口除具有通用IO 口功能外,还具有第二功能。

        当“第二输出功能”端保持“1”状态时,与非门 B 对锁存器Q端是畅通的,此时 P3 口工作在通用 I/O口方式,即P3.n具有与P1n相同的输出、读引脚和读锁存器3个基本功能,且仍为准双向口(工作原理不再赘述)。
        当锁存器 Q端保持“1”状态时,与非门B对“第二输出功能”端是畅通的,此时 P3 口工作在第二功能口状态。
        P3.n引脚的输出电平与“第二输出功能”端保持一致,即“第二输出功能”端分别为1和0 时,P3.n可分别输出1和0。
        “第二输入功能”端的输入值与经由缓冲器T的 P3.n引脚电平保持一致,即 P3.n分别为1和0时,“第二输入功能”端也分别为1和 0。


3、P0口

        8个D触发器构成了P0口锁存器(特殊功能寄存器P0),字节地址为80H。P0口的输出驱动电路由上拉场效应管V2和驱动场效应管V1组成。控制电路包括1个与门 A、1个非门X和1个多路开关 MUX,其余组成与 P1 口相同。

        P0口既可以作为通用的IO口,也可以作为单片机系统的地址/数据线使用。在 CPU 控制信号的作用下,多路开关MUX可以分别接通锁存器输出或地址/数据输出。

        当P0 口作为通用 I/O 口使用时,

        CPU会使“控制”端保持“0”电平一封锁与门A(恒定输出0)→上拉场效应管V2处于截止状态→V1处于漏极开路状态(等效结构图);

        “控制”端为0也使多路开关 MUX与Q接通。此时 P0口与P1 口一样,有输出、读引脚和读锁存器3种工作方式,且也是准双向通用I0口(分析省略),但由于V1漏极开路,要使“1”信号正常输出,必须外接一个上拉电阻(见图(b)),上拉电阻的阻值根据负载需要可取为100欧~10k欧。相比而言,P1、P2、P3口已有内部上拉电阻,故不再必须外接上拉电阻。


        当PO口连接外部存储器时,CPU会使“控制”端保持“1”电平 → 打开与门A(控制权交给“地址/数据”端) → 上拉场效应管 V2 处于导通状态;“控制”端为1也使多路开关 MUX与非门x接通,此时P0口工作在地址/数据分时复用方式。

        当 CPU 需要输出地址和数据信息时,“地址/数据”端电平会与引脚 P0.n 电平保持一致,实现了地址或数据输出到 P0.n功能。由于此时 V2 是导通的,因而没有漏极开路问题,无须再外接上拉电阻。
        当 CPU 需要输入 P0.n 的数据时,CPU 会自动使“地址/数据”端切换到“1”电平,以使V1 截止,确保 PO.n 的数据不会被误读。由于无须额外编程写 1,因而地址/数据分时复用方式时的 P0 口是真正的双向口。
        P0 口能以吸收电流的方式驱动8个LS TTL负载,即灌电流不大于 800μA。


4、P2口

        8个D触发器构成了P2口锁存器(特殊功能寄存器 P2),字节地址为A0H。与P1口相比,P2口中多了一个多路开关MUX,可以实现通用 I/O 口和地址输出两种功能。
        当 P2口用作通用 IO 口时,在“控制”端的作用下,多路开关 MUX 转向锁存器 Q端,构成一个准双向口,并具备输出、读引脚和读锁存器3钟工作方式。

        当单片机执行访问片外RAM片外M指令时,程序计数器PC或数据指针DPTR的高8位地址需由P2.n引脚输出。此时,MUX在CPU的控制下转向“地址”端,“地址”端信号通过引脚P2.n输出(两者电平保持一致)。

        P2口的负载能力和P1口相同,能驱动4个LSTTL负载。


综上所述,PO~P3口都可作为准双向通用I/0口提供给用户,其中P1~P3 口无须外接上拉电阻,P0口需要外接上拉电阻;在需要扩展片外存储器时,P2口可作为其地址线接口,PO口可作为其地址/数据线复用接口,此时它是真正的双向口。

  • 41
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值