STC51从入门到精通(汇编)----第三讲:MCS-51单片机的结构和工作原理

版权声明: https://blog.csdn.net/qq_38351824/article/details/89975961

3.1 概述:

MCS-51单片机芯片有许多种:

      如8051、8031、8751、80C51、80C31等。

      它由8个部件组成:

1、中央处理器(CPU)核心

2、时钟电路                   12MHz

3、程序存储器(ROM/EPROM)4KB

4、数据存储器(RAM)128B+128B SFR

5、并行I/O口(P0~P3)P0和P2兼作外总线

6、串行口          全双工串行口

7、定时器/计数器           2个16位

8、中断系统          5个中断源,高级和低级两级优先级别

    它们都是通过总线连接,并被集成在一块半导体芯片上,为单片微型计算机。

3.1.1 MCS-51单片机系列:

两大系列:MCS-51子系列和MCS-52子系列。

其中51子系列是基本型,而52子系列属于增强型

片内ROM形式
  ROM EPROM
51子系统 8031 8051 8751
80C31 80C51 87C51
52子系统 8032 8052 8752
80C32 80C52 87C52

52子系列与51子系列相比,其功能增强的具体方面如下:

1、片内RAM从128字节增加到256字节;

2、片内ROM从4KB增加到8KB;

3、定时器/计数器从2个增加到3个;

4、中断源从5个增加到6~7个。

3.1.2 单片机芯片的半导体工艺:

MCS-51系列单片机采用以下两种半导体工艺生产:

HMOS     芯片型号中不带有字母“C”的,功耗较大。

HCMOS  芯片型号中凡带有字母“C”的,具有高速度、高密度、低功耗的特点。

例如:8051的功耗为630mW,

           80C51的功耗为120mW。

       在便携式、手提式或野外作业仪器设备或长期无人值守自动监测、监控仪表上是非常有意义的。因为在这些产品中最好使用HCOMS型单片机芯片。

3.1.3 片内ROM存储器的配置形式及应用环境:

① MCS-51单片机内程序存储器的配置形式有三种:

掩模ROM型   (由厂家一次写入,成本低)

EPROM型      (由用户可反复写入,成本较高)

无ROM型       (需在片外扩展)

各有特点,也各有其适用场合,可根据需要进行选择。

② 环境温度范围,划分为三个等级:

        民用级    0 ℃  ~+70 ℃

        工业级 -40 ℃  ~+85 ℃

        军用级 -65 ℃  ~+125 ℃

因此在使用中应该注意根据现场温度选择芯片。

3.2 中央处理器 CPU:

3.2.1 运算器:

1、算术逻辑单元     (ALU---Arithmetic Logic Unit)

2、累加器      (ACC---Accumulator)

3、寄存器       B

4、程序状态字  (PSW---Program Status Word)

5、布尔处理器

3.2.2 控制器:

1、程序计数器(PC---Program Counter)

2、指令译码器ID

3、数据指针(DPTR)

4、堆栈指针(SP---Stack Pointer)

3.2.1 运算器:

功能:运算部件

实现算术、逻辑运算、位变量处理、移位、数据传送

1、算术逻辑单元(ALU8位用来完成二进制四则运算和布尔代数的逻辑运算,运算结果影响PSW的有关标志位。

2、累加器(ACC8位存放操作数和中间结果,是CPU中使用最频繁的寄存器,大多数操作均通过它进行。

3、寄存器8位乘法时用于存乘数/积的高8位,除法时用于存除数/余数。

4、程序状态字(PSW8位特殊功能寄存器

5、布尔处理器 1位 它以进位标志(CY)作为累加位  进行位操作


程序状态字PSW各位标志的含义:

CY(PSW.7)进位标志位

AC(PSW.6)辅助进位(或称半进位)标志

F0 (PSW.5)用户标志位

RS1和RS0(PSW.4,PSW.3)工作寄存器组选择位

OV(PSW.2)溢出标志位

         PSW.1    未定义位

 P  (PSW.0)奇偶标志位

CY是PSW中最常用的标志位。由硬件或软件置位和清零。

**在字节运算时:

它表示运算结果是否有进位(或借位)。

加法时:有进位 CY 由硬件置“1”即CY=1;

               无进位 CY 被硬件置“0”即CY=0;

减法时:有借位 CY 由硬件置“1”即CY=1;

               无借位 CY 被硬件置“0”即CY=0;

**在位操作(布尔操作)时:

       CY作为累加器使用,其作用相当于字节操作的累加器ACC。

在指令中可作为转移的条件:

JC rel    ;cy=1转移

JNC rel  ;cy=0转移

位操作指令中做累加器:

ANL C,bit

ORL C,bit

SETB C

CLR C

CPL C

MOV C,bit

MOV bit,C

ANL C,/bit

ORL C,/bit

AC(PSW.6)辅助进位(或称半进位)标志

       当执行加减运算时,其运算结果产生低四位向高四位进位或借位时,AC由硬件置“1”;否则AC位被自动清“0”。

       一般在BCD码运算时,系统用于进行十进制调整。

OV(PSW.2) 溢出标志位

       它反映运算结果是否溢出,溢出时则由硬件将OV位置“1”;否则置“0”。只有在补码运算时起作用。

       双进位位法判溢出:

OV与CY:

       溢出和进位是两种不同性质的概念

       溢出是指有正负号的两个数运算时,运算结果超出了累加器以补码所能表示一个有符号数的范围。

       而进位则表示两数运算最高位(D7)相加(或相减)有无进位(或借位)。

       因为使用时应加以注意。

FO(PSW.5)用户标志位

       用户可根据自己的需要对F0位赋予一定的含义,由用户置位或复位,作为软件标志。

SETB  F0  ;置位

CLR    F0  ;复位0

P(PSW.0)奇偶标志位

P标志表明累加器ACC中1的个数的奇偶性。在每条指令执行完后,单片机根据ACC的内容对P位自动置位或复位。

若累加器ACC中有奇数个“1”,则P=1;

若累加器ACC中有偶数个“1”,则P=0;


3.2.2 控制器:

1、程序计数器(PC)16位计数器重要

      PC是程序的字节地址计数器,其内容是将要执行的(下一条)指令的地址,寻址范围达64KB。

      PC有自动加1功能,从而实现程序的顺序执行。可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。

2、指令译码器ID

       当指令取出经指令寄存器IR送至指令译码器ID时,ID对该指令进行译码,即把指令转变成所需的电平信号,CPU根据ID输出的电平信号使定时控制电路定时地产生执行该指令所需的各种控制信号,以便计算机能正确执行程序所要求的各种操作。

3、数据指针(DPTR)16bit

      数据指针DPTR为16位寄存器。它的功能是存放16位的地址,作为访问外部程序存储器和外部数据存储器时的地址。

编程时,DPTR即可按16位寄存器使用,也可以按两个8位寄存器分开使用。即:

DPH     DPTR的高8位

DPL      DPTR的低8位

4、堆栈指针(SP)8 bit

      SP的内容就是堆栈栈顶的存储单元地址。不论是数据进栈还是数据出栈,都是对堆栈的栈顶单元进行的,即对栈顶单元的写和读操作。

3.3 MCS-51单片机外部特性:

      MCS-51系列单片机有40个引脚,HMOS工艺制造的芯片采用双列直插式封装(DIP)。

      本节主要介绍引脚功能引脚功能的复用

3.3.1 引脚功能:

1、电源引脚Vcc和Vss

      Vcc为+5V电源端,Vss为电压接地端。

2、时钟电路引脚XTAL1和XTAL2

      XTAL1和XTAL2是外接晶体引线端。当芯片使用内部时钟时,用于外接石英晶体和电容;当用外部时钟时,用于接外部时钟脉冲信号。

3、控制信号引脚

4、I/O(输入/输出)端口(Port)P0、P1、P2、P3

       P0口(32脚~39脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个TTL负载。

       P1口(1脚~8脚):是8位准双向I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个TTL负载。

       P2口(21脚~28脚):是8位准双向I/O口。在访问外部存储器时,他可以作为高8位地址总线送出高8位地址。P2可以驱动(吸收或输出电流)4个TTL负载。

       P3口(10脚~17脚):是8位准双向I/O口,P3口能驱动(吸收或输出电流)4个TTL负载。P3口除了作为一般的准双向通用I/O口使用外,每个引脚还有特殊功能。

3.3.2 引脚的第二功能:

1、P3口线的第二功能

2、EPROM存储器程序固化所需要的信号

      有内部EPROM的单片机芯片,为写入程序需要提供专门的编程脉冲和编程电源。这些信号由引脚第二功能提供,即:

                        编程脉冲         30脚 (ALE/PROG)

                        编程电压21V   31脚 (EA/Vpp)

3、备用电源

      MCS-51系列单片机的备用电源是9脚(RST/Vpd)引入的。当主电源Vcc发生故障时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不被丢失。

3.4 MCS-51单片机时钟电路及CPU的工作时序:

3.4.1 时钟电路

1、NMOS型单片机时钟电路

     时钟电路是单片机的心脏,它控制着单片机的工作节奏。

图3-3左是NMOS型单片机的时钟电路内部结构图,由图可见时钟电路是一个反相放大器,XTAL1和XTAL2分别为反相放大器输入和输出端,外接晶振(或陶瓷谐振器)和电容组成振荡器。振荡器产生的时钟频率主要由晶振的频率决定,电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2变大,f变小),其典型值为30pF。NMOS型单片机也可以不使用内部时钟电路,直接从外部输入时钟,图3-3右是从外部直接输入时钟的电路图。

2、CMOS型单片机时钟电路

      CMOS型单片机(如80C51BH)内部有一个可控的反相放大器,外接晶振(或陶瓷谐振器)和电容组成振荡器,图3-4左为CMOS型单片机时钟电路图。振荡器工作受面端控制,由软件置“1”PD(即特殊功能寄存器PCON.1),使PD=0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。清零PD,使振荡器工作产生时钟,单片机便正常运作。图中晶振、C1、C2的作用和取值与NMOS型单片机时钟电路相同。CMOS型单片机也可以直接从外部输入时钟,图3-4右为直接从外部输入时钟的电路图。

3.4.2 CPU的工作时序

      单片机在执行指令时,通常将一条指令分解为若干基本的微操作,这些微操作所对应的脉冲信号在时间上的先后次序称为单片机的时序。

      时序是非常重要的概念,它指明单片机内部以及内部与外部互相联系所遵循的规律。

MCS-51的时序定时单位从小到大依次为:

1、振荡周期

      振荡周期是指为单片机提供定时信号的振荡源的周期,也称为节拍(用P表示)。

2、时钟周期

      时钟周期又称状态周期或S周期。时钟周期是振荡周期的两倍,时钟周期被分成两个节拍,即P1节拍和P2节拍。在每个周期的前半周期,P1信号有效,这是通常完成算数逻辑操作;在每个时钟的后半期,P2信号有效,内部寄存器与寄存器间的传输一般在次状态发生。

3、机器周期

      一个机器周期由6个状态(S1、S2、S3.....S6)组成,即6个时钟周期,12个振荡周期。可依次表示为S1P1、S2P2、....S6P2共12个节拍,每个节拍持续一个振荡周期,每个状态持续两个振荡周期。可以用机器周期把一条指令划分成若干个阶段,每个机器周期完成某些规定操作。

4、指令周期

      指令周期是指执行一条指令所占用的全部时间,一个指令周期通常含有1~4个机器周期(依指令类型而定)。

显然,当震荡频率为12MHz时,一个机器周期为1us;当振荡频率为6MHz时,一个机器周期为2us。

3.5 MCS-51单片机存储器分类及配置

      80C51单片机在系统上采用了哈佛型,其存储器在物理结构上分程序存储器(ROM)和数据存储器(RAM)。

      有四个物理上相互独立的存储空间:其配置如图2-3所示。

                                                      说  明:

     用户使用的角度上看,80C51存储空间分为3类

① 片内、片外统一编址0000H~0FFFFH的64K字节的程序存储器地址空间;

② 256字节数据存储器地址空间;

③ 64K字节片外数据存储器/I/O口地址空间,地址也从0000H~0FFFFH。

     上述三个空间地址是重叠的,即:

① 程序存储器中片内外低4K字节地址重叠;

② 数据存储器与程序存储器64K地址全部重叠;

③ 数据存储器中片内外低256个字节地址重叠。

     虽然地址重叠,但由于采用了不同的操作指令及控制信号的选择,因此不会产生混乱

3.5.1 程序存储器

     程序存储器用来存放程序代码和常数,程序存储器包括内部程序存储器和外部程序存储器。其中80C51内部有4KB的ROM,地址范围是0000H-0FFFH,片外用16位地址线扩充64KB的ROM,两者统一编址。(从片内还是从片外取值取决于引脚)

     保留单元:

     0000H-0002H      (复位后初始化引导程序 )           3个

     0003H-000AH      (外部中断0                    )           8个

     000BH-0012H      (定时器0溢出中断         )           8个

     0013H-001AH      (外部中断1                    )           8个

     001BH-0022H      (定时器1溢出中断         )           8个

     0023H-002AH      (串行端口中断               )           8个

     002BH                  (定时器2中断(80  C52才有))

当CPU的引脚接高电平时,

           PC在0000H~0FFFH范围内,CPU从片内ROM取指令;而当PC>0FFFH后,则从自动转向片外ROM去取指令。

当引脚接低电平时,80C51片内ROM不起作用,CPU只能从片外ROM取指令,地址可以从0000H开始编址。

            对于片内无ROM的8031、8032单片机,应接地。以便从外部扩展EPROM中取指令。

            80C51从片内ROM和片外ROM取值时执行速度相同。

3.5.2 数据存储器

       数据存储器用来存放运算的中间结果、标志位,以及数据的暂存和缓冲等。数据存储器包括内部数据存储器和外部数据存储器。内部数据存储器分为128字节的RAM区和128字节的特殊功能寄存器区,总的地址范围为00H~FFH。在特殊功能寄存器地址空间中离散地分布着21个特殊功能寄存器。如累加器A、寄存器B、程序状态标志寄存器PSW等。外部可扩充64KB的数据存储器,地址范围为0000H~FFFFH。

       内部数据存储器和外部数据存储器在00H~FFH地址区重叠。对于内部数据存储器可以直接寻址,也可以间接寻址。间接寻址时,间接地址寄存器为R0和R1,指令格式如下:

MOV A, @R0
MOV A, @R1
MOV @R0, A
MOV @R1, A

       外部数据存储器只能间接寻址,间接地址寄存器为R0、R1和DPTR。用R0和R1只能访问低256个字节单元,用DPTR可访问64KB个字节单元。指令格式如下:

MOVX A, @R0
MOVX A, @R1
MOVX A, @DPTR

MOVX @R0, A
MOVX @R1, A
MOVX @DPTR, A


1、内部RAM:

       内部RAM共128字节单元,分为工作寄存器、位寻址区和数据缓冲区三个区域。

                                           内部RAM的三个区域:

1 )工作寄存器(00H---1FH)

RS1 RS0 寄存器组 片内RAM地址
0 0 第0组 00H~07H
0 1 第1组 08H~0FH
1 0 第2组 10H~17H
1 1 第3组 18H~1FH

       R0~R7 4组

2 )位寻址区(20H---2FH)

       内部RAM的20H~2FH单元为位寻址区,这16个单元(共计128位)的每一位都有一个8位表示的位地址,位寻址范围为00H~7FH。

       位寻址区的每一个单元既可作为一般的RAM单元使用,进行字节操作,也可以对单元中的每一位进行位操作。

       MCS-51布尔处理器的存储空间就是指这个位寻址空间。

MOV 28H,#56H  字节操作
SETB 43H      位操作
CLR  42H      位操作

3 )用户RAM区(30H---7FH)

       30H~7FH是供用户使用的一般RAM区,也是数据缓冲区,共80个单元。对用户RAM区的使用没有任何规定或限制,一般用于存放用户数据及作堆栈区使用。

2、特殊功能寄存器 SFR:

       80C51片内高128字节RAM中,有21个特殊功能寄存器,又称为专用寄存器(SFR)。它们离散地分布在80H~0FFH RAM空间中。

1 )特殊功能寄存器的字节寻址

       8051片内21个特殊功能寄存器的名称、符号及单元地址如表3-8所示。

2 )特殊功能寄存器的位寻址

       在21个特殊功能寄存器中,有11个寄存器具有位寻址功能,即表3-9中,有11个可位寻址的寄存器,它们的字节地址正好能被8整除,而且字节地址与该字节最低位的·位地址相同。

                                        关于位地址的确定:

1、片内RAM20H~2FH中的各位的位地址:

      单元地址.b的位地址=(单元地址-20H)*8+b

:27H.6=(27H-20H)*8+6=62=3EH

2、可以位寻址的SFR的位地址:

      SFR.b的位地址=SFR字节地址+b

:ACC.7的位地址=E0H+7=E7H

3、外部数据存储器(RAM/I/O)

      外部数据存储器,即片外RAM一般由静态RAM组成。MCS-51系列单片机访问外部数据存储器通过一个特殊寄存器----DPTR寻址。由于DPTR是16位,,则外部数据存储器可寻址的范围是64KB

      外部RAM地址范围为0000H~0FFFFH,其中在0000H~00FFH区间与内部数据存储器空间是重叠的,CPU使用MOV指令和MOVX指令加以区分

      若用户应用系统有扩展的I/O接口时,数据区与扩展的I/O口统一编址,所有的外围接口地址均占用片外RAM的地址单元,因此要合理地分配地址空间,保证译码的唯一性。

3.6 布尔处理器:

3.6.1 布尔处理机:

       布尔处理器实际上是一位字长的计算机,它由中央处理器、位累加器、位地址空间和位操作指令。通过编程可实现位处理或位控制功能,经常用于简单的开关信号控制系统中。

3.6.2 MCS-51单片机中布尔处理机的组成:

       在MCS-51单片机的内部RAM中,20H~2FH的16个字节单元即可以按字节寻址,也可以由CPU按位直接寻址。这16个单元共有128位,每位有一个位地址,寻址范围为00H~7FH。另外,有11个特殊功能寄存器,如累加器A、寄存器B、程序状态字PSW等,既有字节地址,也有位地址。

       在指令系统中,设有位操作指令,与位累加器C和位地址空间结合起来,构成一个完整的布尔处理机。与位累加器C和位地址空间结合起来,构成一个完整的布尔处理机。位操作指令有位传送、位清0、位置1、位取“反”、按位“与”、按位“或”及位测试转移等。中央处理器CPU可通过位操作指令对位累加器和位地址空间进位操作。

3.7 并行I/O接口:

       MCS-51单片机内部设置有4个并行I/O接口,其中P0口为双向三态输入输出接口,P1、P2、P3口为8位准双向输入输出接口。

3.7.1 P0口与P2口:

       P0口是一个8位双向三态输入输出接口,P2口是一个准双向输入输出接口,而且每一位都有自己的位地址。中央处理器可接字节进行数据传送,也可按位进行位操作。在连接外部存储器时,P0口一方面作为8位数据输入输出口,另一方面输出外部存储器的低8位地址,地址/数据分时传送。因此,P0口实际上是地址/数据总线接口。P2口输出外部存储器的高8位地址。

3.7.2 P1口与P3口:

       P1口与P3口是一个8位准双向输入输出接口,每一位也有自己的位地址。中央处理器可按字节进行数据传送,也可按位进行位操作。另外,P3口具有第二功能。

3.8 MCS-51单片机的工作方式:

       MCS-51单片机的工作方式有:

       复位方式、单布执行方式、程序执行方式、低功耗方式以及EPROM编程、检验与加密方式。

3.8.1 复位方式:

      复位是指单片机的初始化操作:

1、复位信号(RST/VPD)

       RST引脚是复位信号的输入端,复位信号为高电平有效。当高电平持续24个振荡脉冲周期(两个机器周期)以上时,单片机完成复位。       

2、复位

      单片机复位后,要注意程序计数器的PC和特殊功能寄存器的状态。

      复位后,PC初始化为0000H,使单片机从0000H开始执行程序。复位后不影响片内RAM。

3、复位方式

      复位分为上电自动复位按键手动复位和。

3.8.2 单步执行方式:

      单步执行就是通过外来脉冲控制程序的执行,使之达到来一个脉冲就执行一条指令的目的。

      而外来脉冲是通过按键产生的,因此单步执行实际上就是按一次键执行一条指令。

                                      

3.8.3 程序执行方式:

      程序执行方式是单片机的基本工作方式。由于复位后PC=0000H,因此程序总是从地址0000H开始。

3.8.4 低功耗方式:

      80C51有HMOS器件所不具备的两个低功耗运作方式,即休闲和掉电保护方式。图3-12所示为实现这两种方式的内部电路。由图3-13可见:① 若PCON中的=0,则80C51将进入休闲运作方式。在这种方式下,振荡器仍然继续运行,但封锁了区

去CPU的与门。故CPU此时得不到时钟信号,而中断、串行接口和定时器等环节却仍在时钟控制下正常运行。②掉电方式下(PCON中=0),振荡器冻结。

3.8.5 EPROM编程、检查与擦除方式:

      在87C51单片机内部设置有4KB的EPROM只读存储器,因此也就存在着编程、检查和擦除的问题。

1、EPROM编程:

      EPROM编程时一般采用4~6MHz的振荡频率。EPROM单元地址由P1口和P2口的P2.0~P2.3输入,写入数据由P0口输入,P2.4~P2.6和接低电平,P2.7接高电平,RST接2.5V高电平,/VDD端平时为TTL高电平,EPROM编程时加+21V电压,ALE/加50ms的低电平编程脉冲。芯片连接与时序如图3-16所示。为了安全可靠,VDD不得超过+21.5V。

2、程序检查与擦出

3、87C51H单片机加密位的编程

猜你喜欢

转载自blog.csdn.net/qq_38351824/article/details/89975961