47
本本本本 本本本本本本本本 本本本本本本本本本本本本本 本本本本本 CPU 本本 第2第 MCS-51 第第第第第第第第

本章要点: 单片机的内部结构 单片机引脚的电气性能及功用       辅助电路及 CPU 时序

  • Upload
    reba

  • View
    213

  • Download
    0

Embed Size (px)

DESCRIPTION

第 2 章 MCS-51 单片机的硬件结构. 本章要点: 单片机的内部结构 单片机引脚的电气性能及功用       辅助电路及 CPU 时序. 2.1 MCS-51 单片机的逻辑结构及信号引脚 2.1.1 MCS-51 单片机内部结构 MCS-51 单片机的系统框图如图 2-1 所示。. 单片机的各功能部件由内部总线连接在一起,其中主要有 CPU 、存储器、定时器 / 计数器、 I/O 口等。图 2-2 是 MCS-51 系列单片机内部的逻辑结构框图。. 以 8051 为例,它包含下列部件: 1. 中央处理器( CPU ) - PowerPoint PPT Presentation

Citation preview

本章要点:

单片机的内部结构

单片机引脚的电气性能及功用

辅助电路及CPU时序

第 2章 MCS-51单片机的硬件结构

2.1 MCS-51 单片机的逻辑结构及信号引脚

2.1.1 MCS-51 单片机内部结构

MCS-51 单片机的系统框图如图 2-1 所示。

CPU

时钟电路

P0 P3P2P1 TXD RXD INT0 INT1

并行接口 串行接口 中断系统

/定时 计数器RAMROM

T0 T1

单片机的各功能部件由内部总线连接在一起,其中主要有 CPU 、存储器、定时器 / 计数器、 I/O 口等。图 2-2 是 MCS-51 系列单片机内部的逻辑结构框图。

以 8051 为例,它包含下列部件:

1.中央处理器( CPU)

中央处理器是单片机的核心,完成运算和控制功能。由运算器和控制器组成。运算器是计算机的运算部件,用于实现算术和逻辑运算。计算机的数据运算和处理都在这里进行。控制器是计算机的指挥控制部件,它控制计算机各部分自动、协调地工作。运算器和控制器是计算机的核心部分,常把它们合在一起称之为中央处理器,简称 CPU 。 MCS-51的 CPU 能处理 8 位二进制数或代码。

2.内部数据存储器(内部 RAM)

8051 芯片中共有 256 个 RAM 单元,但其中后 128 单元被专用寄存器占用,能作为寄存器供用户使用的只是前 128 单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前 128 单元,简称内部 RAM 。

3. 内部程序存储器(内部 ROM )

8051 共有 4 KB 掩膜 ROM ,用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部 ROM 。

4.定时 /计数器

8051 共有两个 16 位的定时 / 计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。

5.并行 I/O口

MCS-51 共有 4 个 8 位的 I/O 口( P0 、 P1 、 P2 、 P3 ),以实现数据的并行输入 / 输出。

6.串行口

MCS-51 单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。

7. 中断控制系统

MCS-51 单片机的中断功能较强,以满足控制应用的需要。 8051 共有 5 个中断源, 即外中断两个,定时 / 计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别。

8. 时钟电路

MCS-51 芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为 6 MHz 和 12 MHz 。

2.1.2 MCS-51 的信号引脚80C51 是标准的 40 引脚双列直插式集成电路芯片,引脚排列参见图 2-3 。

1. I/O线

PO.0 ~ PO.7 PO 口 8 位双向 I/O 口线。

P1.0 ~ P1.7 P1 口 8 位双向 I/O 口线。

P2.0 ~ P2.7 P2 口 8 位双向 I/O 口线。

P3.0 ~ P3.7 P3 口 8 位双向 I/O 口线。而且, P3 口线有第二功能,如表2-2 所示,使用时首先按需要优先选用它的第二功能,剩下不用的口线才作为 I/O 口线使用。

2. ALE/PROG地址锁存控制信号

在系统扩展时, ALE 用于控制把 P0 输出的低 8 位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于 ALE 是以六分之一晶振频率的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用,但是当访问外部数据存储器时会丢失一个脉冲。

在 8751 单片机 EPROM编程期间,此引脚接编程脉冲( PROG 功能)

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

RST/VPD9

RXD P3.010

TXD P3.111

INT0 P3.212

INT1 P3.313

T0 P3.414

T1 P3.515

WR P3.616

RD P3.717

XTAL218

XTAL119

VSS20 P2.0 21P2.1 22P2.2 23P2.3 24P2.4 25P2.5 26P2.6 27P2.7 28

PSEN 29ALE/PROG 30

EA/VPP 31P0.7 32P0.6 33P0.5 34P0.4 35P0.3 36P0.2 37P0.1 38P0.0 39VCC 40

8031

80

51

875

1

口线 第二功能 信号名称

P3.0 RXD 串行数据接收

P3.1 TXD 串行数据发送

P3.2 /INT0 外部中断 0申请

P3.3 /INT1 外部中断 1申请

P3.4 T0定时器 / 计数器 0 计数输

P3.5 T1定时器 / 计数器 1 计数输

P3.6 /WR 外部 RAM 写选通

P3.7 /RD 外部 RAM 读选通

3. PSEN外部程序存储器读选通信号

CPU 在访问外部程序存储器时信号在每个机器周期中两次有效(低电平),以实现外部 ROM 单元的读操作。但在此期间,当访问外部数据存储器时, PSEN 信号不出现。

4. EA/VPP外部访问允许 /编程电源输入端

当 EA 信号为低电平时,对 ROM 的读操作限定在外部程序存储器;而当 EA 信号为高电平时,则对 ROM的读操作从内部程序存储器( 0000H ~ 0FFFH)开始,并可自动延续至外部程序存储器。 8031 单片机内部无程序存储器 ,所以 EA端应始终为低电平。

在 8751 单片机内部 EPROM编程期间,此引脚接 21V 编程电压。

5. RST/VPD 复位信号

当输入的复位信号延续 2 个机器周期以上高电平时即为有效,用以完成单片机的复位操作。此引脚还可以接上备用电源。在 Vcc 掉电期间,由 VPD向内部 RAM提供电压,以保持内部 RAM 的数据。

6. XTAL1和 XTAL2 外接晶体引线端

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。在单片机内部, XTAL1 是反相放大器的输入端,该放大器构成片内振荡器; XTAL2 接至反相放大器的输出端。采用外部时钟时,对于 HMOS 单片机, XTAL1 引脚必须接地, XTAL2 输入外部时钟脉冲;对于 CHMOS 单片机, XTAL1 作为驱动端, XTAL2 引脚应悬空。

7. Vss 地线。

8. Vcc +5v电源。

2.2 MCS-51 单片机的内部存储器

MCS-51 单片机有两个独立寻址的程序存储器和数据存储器,它们的结构如下:

8051 单片机程序存储器包含片内外统一编址的 64K字节的程序存储空间,即片内 4KB 的 ROM 和片外 64KB 的 ROM 组成连续的程序存储空间;数据存储器包含片内 128B 和片外 64KB 的数据存储空间,如图 2-4 所示。

FFFFH

1000H

外部ROM

0FFFH

0000H

内部ROM

EA = 1

外部ROM

EA = 0工作寄存器0 3~ 组

位寻址区

RAM

SFR

00H

20H

30H

80H

FFH

外部RAM

0000H

FFFFH

CPU访问不同存储器时使用的指令不同,片选信号不同

指令 片选信号

访问程序存储器 MOVC PSEN

访问片内数据存储器 MOV

访问片外数据存储器 MOVX RD 、 WR

2.2.1 内部数据存储器低 128 单元

80C51 的内部共有 256 个数据存储器单元,通常把这 256 个单元按其动能划分为两部分:低 128 单元(单元地址 00H ~ 7FH ) RAM 和高 128 单元(单元地址 80H ~ FFH ) SFR 。

其中低 128 单元是单片机中供用户使用的数据存储器单元,可分为 3 个区域:

1.寄存器区

地址 00H ~ 1FH ,共 32 个单元,分为 4 组,各寄存器组地址分布如表2-5 所示,每组有 8 个 8 位寄存器,各组都记作 R7 ~ R0 。寄存器常用于存放操作数及中间结果等。

在任一时刻, CPU 只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是那一组,由程序状态字寄存器 PSW中RS1 、 RS0 位的状态组合来决定。

2.位寻址区

内部 RAM 的 20H ~ 2FH 单元,既可作为一般 RAM 单元使用,进行字节操作,也可以对单元中的每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16 个 RAM 单元,总计 128 位,位地址为 00H ~ 7FH ,如表 2-3 。位寻址区是布尔处理器的一部分。

单元地址 MSB← 位地址 → LSB

2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H

7FH 7EH 7DH 7CH 7BH 7AH 79H 78H77H 76H 75H 74H 73H 72H 71H 70H6FH 6EH 6DH 6CH 6BH 6AH 69H 68H67H 66H 65H 64H 63H 62H 61H 60H5FH 5EH 5DH 5CH 5BH 5AH 59H 58H57H 56H 55H 54H 53H 52H 51H 50H4FH 4EH 4DH 4CH 4BH 4AH 49H 48H47H 46H 45H 44H 43H 42H 41H 40H3FH 3EH 3DH 3CH 3BH 3AH 39H 38H37H 36H 35H 34H 33H 32H 31H 30H2FH 2EH 2DH 2CH 2BH 2AH 29H 28H27H 26H 25H 24H 23H 22H 21H 20H1FH 1EH 1DH 1CH 1BH 1AH 19H 18H17H 16H 15H 14H 13H 12H 11H 10H0FH 0EH 0DH 0CH 0BH 0AH 09H 08H07H 06H 05H 04H 03H 02H 01H 00H

3.用户 RAM区

供用户使用的一般 RAM区,共有 80 个单元,其单元地址为 30H ~ 7FH 。在一般应用中常把堆栈开辟在此区中。 MCS—51 单片机堆栈区不是固定的 , 原则上可设在内部 RAM 的任意区域内 , 但为了避开工作寄存器区和位寻址区 , 一般设在 30H 以后的范围内。

2.2.2 内部数据存储器高 128 单元

内部 RAM 的高 128 单元是供给专用寄存器使用的,其单元地址为 80H ~ FFH 。因这些寄存器的功能已作专门规定,故称为专用寄存器( SFR),也可称为特殊功能寄存器。

l.程序计数器 PC

PC 是一个 16 位的计数器,其内容为将要执行的指令地址 (所要执行的下一条指令的地址),实际上它是指令地址寄存器,寻址范围达 64KB 。 PC有自动加 1 功能,以实现程序的顺序执行。 PC 没有地址,是不可寻址的,因此用户无法对它进行读写,它不属于专用寄存器,但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。

2.累加器 Acc

Acc是一个具有特殊用途的 8 位寄存器,主要用于存放操作数或运算的中间结果。 8051 指令系统中的多数指令的执行都要通过 Acc,所以它的地位重要,任务繁忙。

3. B寄存器B 寄存器是一个 8 位寄存器,主要用于乘除运算。乘法运算时, B 为乘数。

乘法操作后,乘积的高 8 位存于 B 中,乘积的低 8 位存放于累加器 A 中。除法运算时 B 为除数。除法操作后,余数存于 B 中,商存放于累加器 A 中。此外,B 寄存器也可作为一般数据寄存器使用。

4.程序状态字 PSW

程序状态字是一个 8 位寄存器,用于寄存指令执行的状态信息。 PSW各位定义如下:

除 PSW.l位保留未用外,其余各位的定义及使用介绍如下:·CY 或 C—进位标志位。

累加器 A 的最高位有进位(加法)或借位(减法)时, CY=1 ,否则 CY=0 。在位操作中,作累加位使用,在位传送、位与、位或等操作中,都要使用进位标志位。可以记作 C 。·AC—辅助进位标志位。在加减运算中,当有低 4 位向高 4 位进位或借位时, AC 由硬件置位,否则 A

C 位被清“ 0”。在 BCD码运算时需要十进制调整时也要用到 AC 位状态进行判断。·FO—用户定义的标志位。用户可根据需要用软件方法对该位进行置位或复位,以控制程序的流程。·RS1 、 RS0—寄存器组选择位。用于设定当前通用寄存器区,由指令置位或清零。通用寄存器有 4 组,其对

应关系如表 2-3 所示。

位序 PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

标志 CY AC F0 RS1 RS0 OV / P

RS1 RS0 寄存器组 片内 RAM 地址

0 0 组 0 00H ~ 07H

0 1 组 1 08H ~ 0FH

1 0 组 2 10H ~ 17H

1 1 组 3 18H ~ 1FH

·OV—溢出标志位。当带符号数加减运算结果超出范围( -128 ~ +127),即产生了溢出,此时 OV=1

,表示加减运算运算结果是错误的;否则, OV=0 表示运算正确。在乘法运算中, OV=1 ,表示乘积超过 255 ,即乘积分别在 B与 A 中;反之 OV=0

,表示乘积只在 A 中。在除法运算中, OV=1 ,表示除数为 0 ,除法不能进行;反之, OV=0 ,表示除数不

为 0 ,除法可正常进行。·P—奇偶标志位。表明累加器 A 中 1 的个数的奇偶性,在每个指令周期由硬件根据 A 的内容对 P 位进

行置位或复位。若 1 的个数为偶数, P=0;若 1 的个数为奇数, P=1 。

5. 数据指针 DPTR

数据指针为 16 位寄存器,可以作为 16 位寄存器,也以作为两个 8 位寄存器使用,即:DPH(DPTR 高位字节)DPL(DPTR 低位字节)

6.堆栈指针 SP

堆钱是一种数据结构,是只允许在其一端进行数据写入和删除操作的线性表。数据写入堆栈称为插入运算( PUSH),即入栈。数据从堆栈中读出称之为删除运算( POP),即出栈。堆栈按照“后进先出”原则存取数据。它的功能是在程序中断、子程序调用时,保护主程序的断点和某些寄存器的内容。

堆栈指针 SP 是 8 位的寄存器,用来指示堆栈顶部在内部 RAM 中的位置。系统复位后,( SP) =07H ,但是一般堆栈开辟在用户 RAM区中,所以,程序设计时要注意把 SP 设置在 30H 单元后。

堆栈的操作有两种方式。一种是自动方式,即在调用子程序或中断时,返回地址(断点)自动进栈。程序返回时,断点再自动弹回 PC 。另一种是指令方式,其进栈指令为 PUSH ,出栈指令为 POP 。

8051 单片机堆栈的操作原则如下:

入栈操作: SP 指针先加 1 ,后写入数据;

出栈操作,先将 SP 指针所指地址的内容读出,然后 SP 自动减 1 。

说明:

8051 单片机的 21 个专用寄存器离散的分布在内部 RAM 的高 128 单元中,如表 2-4 所示。实际上 SFR 也只定义了 21 个专用寄存器,而其他的单元均无定义,访问它们无意义,访问专用寄存器只能用直接寻址方式。在 21 个可字节寻址的专用寄存器中,有 11 个寄存器可位寻址,在表 2-4 中以( * )标出。字节地址可被 8整除的 SFR具有位寻址功能。

符号 单元地址 名称位地址

符号 地址

*ACC E0H 累加器 ACC.7 ~ ACC.0 E7H ~ E0H

*B F0H 乘法寄存器 B.7 ~ B.0 F7H ~ F0H

*PSW D0H 程序状态字 PSW.7 ~ PSW.0 D7H ~ D0H

SP 81H 堆栈指针    

DPL 82H 数据指针(低八位)    

DPH 83H 数据指针(高八位)    

*IE A8H 中断允许控制器 IE.7 ~ IE.0 AFH ~ A8H

*IP B8H 中断优先控制器 IP.7 ~ IP.0 BFH ~ B8H

*P0 80H 通道 0 P0.7 ~ P0.0 87H ~ 80H

*P1 90H 通道 1 P1.7 ~ P1.0 97H ~ 90H

*P2 A0H 通道 2 P2.7 ~ P2.0 A7H ~ A0H

*P3 B0H 通道 3 P3.7 ~ P3.0 B7H ~ B0H

PCON 87H 电源控制及波特率选择    

*SCON 98H 串行口控制 SCON.7 ~SCON.0

9FH ~ 98H

SBUF 99H 串行数据缓冲器    

*TCON 88H 定时控制 TCON.7 ~TCON.0

8FH ~ 88H

TMOD 89H 定时器方式选择    

TL0 8AH 定时器 0 低 8 位    

TL1 8BH 定时器 1 低 8 位    

TH0 8CH 定时器 0 高 8 位    

TH1 8DH 定时器 1 高 8 位    

2.2.3 内部程序存储器

8051 芯片内有 4KB 的 ROM 存储单元,其地址为 0000H ~ OFFFH ,即内部 ROM 。在程序存储器中有一组特殊的保留单元 0000H ~ 002AH ,使用时应特别注意。

其中 0000H ~ 0002H 是系统的启动单元。因为系统复位后,( PC) =0000H ,单片机从 0000H 单元开始取指令执行程序。使用时应当在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。

而 0003H ~ 002AH 共 40 个单元被均匀地分为五段,每段 8 个单元,分别作为五个中断源的中断地址区。具体划分为:

0003H ~ 000AH 外部中断 0 中断地址区

000BH ~ 0012H 定时器 / 计数器 0 中断地址区

0013H ~ 001AH 外部中断 1 中断地址区

001BH ~ 0022H 定时器 / 计数器 1 中断地址区

0023H ~ 002AH 串行中断地址区

中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。但通常情况下, 8 个单元难以存下一个完整的中断服务程序,因此一般也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址再转到中断服务程序的实际入口地址去。

2.3 MCS-51 单片机并行输入 / 输出口

MCS-51 有 4 个并行双向口,共 32根 I/O 线,每个 I/O 口包含一个锁存器,一个输出驱动器和一个输入缓冲器。

2.3.1 P0 口

1.结构: P0 口的字节地址为 80H ,位地址为 80H ~ 87H 。 P0 口是一个三态双向口,可作为地址 / 数据分时复用口,也可作为通用 I/O 接口。其 1 位的结构原理如图 2—5 所示。

3

1

2

VCC地址/数据控制

锁存器P0.X

D

CP

Q

QMUX

V2

V1

P0.X引脚

读锁存器

写锁存器

内部总线

读引脚

&

14

P0 口由 8 个这样的电路组成 :锁存器起输出锁存作用, 8 个锁存器构成了特殊功能寄存器 P0;场效应管( FET ) V1 、 V2 组成输出驱动器,以增大带负载能力;三态门 1 是引脚输入缓冲器;三态门 2 是用于读锁存器端口;与门 3 、反相器 4 及模拟转换开关构成输出控制电路。 2.地址 /数据分时复用功能:当 P0 口作为地址 / 数据分时复用总线时,可分为两种情况:一种是从 P0 口输出地址或数据,另一种是从 P0 口输入数据。在访问片外存储器需从 P0 输出地址或数据信号时,控制信号应为高电平 1 ,使转换开关 MUX把反向器 4 的输出端与 V1 接通,同时把与门 3打开。

3.通用 I/O接口功能: P0 口作为通用 I/O 接口使用, CPU 向端口输出数据时,对应的控制信号为 0 ,转换开关把输出级与锁存器端接通,同时因与门 3 输出为 0 使 V2截止,此时输出级是漏极开路电路。

当 P0 口作为通用 I/O 接口时,要注意两点:第一,在输出数据时,由于 V2截止,输出级是漏极开路电路,要使“ 1”信号正常输出,必须外接上拉电阻。第二, P0 口作为通用 I/O 使用时是准双向口。

4.端口操作

MCS—51 单片机有不少指令可直接进行端口操作,例如:

ANL P0 , A ;( P0)←( P0)∧( A)

ORL P0 , #data ;( P0)←( P0)∨ data

DEC P0 ;( P0)←( P0)- 1

2.3.2 P1 口

P1 口的字节地址为 90H ,位地址为 90H ~ 97H 。 P1 的口线逻辑电路如图 2-6 所示。

VCC

锁存器P1.X

D

CP

Q

Q

P1.X引脚

读锁存器

写锁存器

内部总线

读引脚

内部上拉电阻2

1

V1

P1 口为准双向口。它在结构上与 P0 口的区别在于输出驱动部分,其输出驱动部分由场效应管 V1与内部上拉电阻组成。当其某位输出高电平时,可以提供拉电流负载,不必像 P0 口那样需要外接电阻。

从功能上来看 P1 只有一种功能(对 MCS—51子系列),即通用输入输出 I/O 接口,具有输入、输出、端口操作 3种工作方式,每 1 位口线能独立地用作输入或输出线。当P1 口作为输入口使用时,应先向其锁存器写入“ 1”,使输出驱动电路的 FET 截止。

2.3.3 P2 口

P2 口的字节地址为 0A0H ,位地址为 OAOH ~ OA7H 。P2 口的电路逻辑参见图 2-7

锁存器P2.X

D

CP

Q

Q

读锁存器

写锁存器

内部总线

读引脚

VCC

P2.X引脚

内部上拉电阻

1

地址 控制

MUX

2

13

V1

因为在实际应用中 P2 口用于为系统提供高位地址,因此在口电路中有一个多路转接开关 MUX。但单一的 P2 MUX的一个输入端是单一的“地址”,这是因为 P2 口只作为地址线使用而不作为数据线使用。当 P2 口作为高位地址线使用时,多路转接开关应倒向“地址”端。 P2 口也是一个准双向口。

此外, P2 口也可以作为通用 I/O 口使用,这时多路转接开关倒向锁存器 Q端。

2.3.4 P3 口

P3 口的字节地址为 0B0H ,位地址为 0B0H ~ 0B7H 。 P3 口电路逻辑参见图 2-8 。

锁存器P3.X

D

CP

Q

Q

读锁存器

写锁存器

内部总线

读引脚

VCC

P3.X引脚

内部上拉电阻

&

第二输出功能

第二输入功能

2

1

V1

3

4

它的输出驱动由与非门 3 、 V1 组成,比 P0 、 P1 、 P2口结构多了一个缓冲器 4 。 P3 口除了可作为通用准双向 I/O 接口外,还具有第 2 功能。

当 P3 口作为通用 I/O 接口时,第 2 功能输出线为高电平,使与非门 3 的输出取决于口锁存器的状态。在这种情况下, P3 口仍是 1 个准双向口,它的工作方式、负载能力均与 P1 、 P2 口相同。

当 P3 口作为第 2 功能使用时,其锁存器 Q 端必须为高电平,否则 V1管导通,引脚被箝位在低电平,无法输入或输出第 2 功能信号。当 Q端为高电平时, P3口的口线状态就取决于第 2 功能输出线的状态。

2.4 MCS-51 单片机时钟电路与复位电路

单片机的各项工作是在时钟脉冲的控制下工作的,而时钟脉冲信号的产生则由单片机内部或外部时钟电路产生。

2.4.1 时钟电路

在 MCS—51 芯片内部有一个高增益反相放大器,频率范围是 1.2 ~12MHz 。其输入端为芯片引脚 XTAL1 ,输出端为引脚 XTAL2 ,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。即单片机的时钟电路。如图 2-9

1

XTAL1

XTAL2

C1

C2

晶振

8051

至内部时钟电路

8051

1

XTAL1

XTAL2

VSS

TTL外部时钟信号

VCC

8 0 C 51

1 X T A L 1

X T A L 2

V S S

T T L

外 部 时

钟 信 号

一般地,电容 C1 和 C2取 30pF 左右。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。要特别注意时钟脉冲与振荡脉冲之间的二分频关系,否则会造成概念上的错误。

MCS-51 单片机也可采用外部时钟,此时使用外部振荡器产生外部时钟脉冲信号,外部脉冲信号由 XTAL2端直接送至内部时钟电路,XTAL1端接地。外部时钟电路如图 2-10 所示。

对于 CHMOS型的 80C51 单片机,因其内部时钟发生器的信号取自反相放大器的输入端,所以接外部时钟信号时应接至 XTAL1端,而使 XTAL2端悬空,如图 2-10( b)所示。

2.4.2 时序定时单位

时序: CPU执行一条指令的各个微操作所对应的脉冲信号遵循的时间顺序。

1.节拍与状态

把振荡脉冲的周期定义为节拍(用“ P”表示)。振荡脉冲经过二分频后,就是单片机的时钟信号,把时钟信号的周期定义为状态(用“ S”表示)。这样,一个状态就包含两个节拍,其前半周期对应的节拍叫节拍 1( P1),

后半周期对应的节拍叫节拍 2( P2)。

一个状态周期(状态节拍) =2 个振荡周期(节拍)

2.机器周期

规定一个机器周期的宽度为 6 个状态,依次表示为 S1 ~ S6 。一个机器周期总共有 12 个节拍,分别记作 S1P1 , S1P2 ,……, S6P2 。当振荡脉冲频率为 12MHz 时,一个机器周期为 lμs,当振荡脉冲频率为 6MHz 时,一个机器周期为 2μs。 MCS-51 在通常应用情况下,使用振荡频率为 6MHz 或 12MHz 。

一个机器周期 =6 个状态 =12 个节拍

3.指令周期

指令周期是最大的时序定时单位,执行一条指令所需要的时间称之为指令周期。 MCS-51 的指令周期根据指令的不同,可包含有 1 、 2 、 3 或 4个机器周期。

一个指令周期 =1~4 个机器周期

例:若MCS-51 单片机的振荡频率为 6MHZ ,则一个机器周期为多少微秒?

(执行一条单机器周期指令需多少微秒?)

解:因振荡频率为 6MHZ ,则一个振荡周期为 1/6×10-6S=1/6μS

一个机器周期 =6倍状态周期 =12倍振荡周期 =12×1/6=2 μS

4.典型指令的取指和执行时序

单片机执行任何一条指令都有取指令和执行指令两个阶段。通常情况下,在每个机器周期内, CPU 不管是否需要总要进行两次取指操作。 MCS—51 单片机的 CPU取指令和执行指令的时序如图 2-11 所示。

( a ) 1 字节 1 周期指令

读操作码 读操作 码 ( 无效 )

读操作码

T时钟脉冲

P1 P2

S1

P1 P2

S2

P1 P2

S3

P1 P2

S4

P1 P2

S5

P1 P2

S6

读操作 码 ( 无效 )

读下一条指令

读下一条指令读操作码 读第二字节

ALE

P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2

S1 S2 S3 S4 S5 S6

P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6

( b ) 2 字节 1 周期指令

( c ) 1 字节 2 周期指令

由时序图可见, ALE 引脚上出现的信号是周期性的,访问程序存储器时,地址锁存信号 ALE 两次有效,即在每个机器周期内出现两次高电平。第一次出现在 S1P2 和 S2P1期间,第二次出现在 S4P2 和 S5P1期间。 ALE信号每出现一次, CPU 就进行一次取指令操作,但由于不同指令的字节数和机器周期数不同,因此取指令操作也随指令不同而有小的差异。

按照指令字节数和机器周期数, 8051 的指令可分为 6类,分别是:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令。

图 2-11( a)、( b)所示分别给出了单字节单周期和双字节单周期指令的时序。单周期指令的执行始于 S1P2 ,这时操作码被锁存到指令寄存器内。若是双字节,则在同一机器周期的 S4 读第二字节。若是单字节指令,则在 S4仍有读操作,但被读入的字节无效,且程序计数器 PC 并不增量。

图 2-11( c)给出了单字节双周期指令的时序,两个机器周期内进行4次读操作码操作。因为是单字节指令,所以,后三次读操作都是无效的。

2.4.3 复位电路与复位状态

通过某种方式,使单片机内各寄存器的值变为初始状态的操作称为复位。MCS—51 单片机在时钟电路工作以后,在 RST/VPD端持续给出 2 个机器周期的高电平就可以完成复位操作(一般复位正脉冲宽度大于 10ms)。复位有上电复位和外部复位两种方式。其电路如图 2-12 所示。

MCS - 51

VCC

VCC

RESET

VSS

22 F

1 k

MCS - 51

VCC

VCC

RESET

VSS

22 FRESET

R1

R2

(a ) (b )

200

复位后,内部各专用寄存器状态如下( *表示无关位): PC : 0000H TMOD: 00H ACC : 00H TCON: 00H B : 00H TH0 : 00H PSW: 00H TL0 : 00H SP : 07H TH1 : 00H DPTR : 0000H TL1 : 00H P0 ~ P3 : FFH SCON: 00H IP : ***00000B SBUF: 不定 IE : 0**00000B PCON: 0***0000

注意 : 1. 复位后 PC值为 0000H ,表明复位后程序从 0000H开始执行; 2. SP值为 07H ,表明堆栈底部在 07H 。一般需重新设置 SP值; 3. P0 ~ P3 口值为 FFH 。 P0 ~ P3 口用作输入口时,必须先写

入“ 1”。单片机在复位后,已使 P0 ~ P3 口每一端线为“ 1”,为这些端线用作输入口做好了准备。

本章小结

本章介绍MCS-51型单片机芯片的硬件结构及工作特性。 MCS-51 单片机是由一个 8 位 CPU ,一个片内振荡器和时钟电路, 4KB 的 ROM 程序存储器, 128B 的 RA

M 数据存储器, 21 个特殊功能寄存器,两个 16 位的定时器 / 计数器,可寻址的 64KB 外部数据存储器和 64KB

外部程序存储器空间的控制电路, 32条可编程的 I/O 口线( 4 个 8 位并行 I/O端口 P0 , P1 , P2 , P3),一个可编程的全双工串行口,具有 5 个中断源、 2 个优先级的中断结构组成。片有 40 个外部引脚,电源、地、 X

TAL0/XTAL1 、 P0 ~ P3 口、 ALE 、 PSEN、 RESET 、EA 。

8051 单片机内部有 256B 数据存储器,分为高低 128B 。低 128B 的片内 RAM 分为工作寄存器区、位寻址区、用户RAM区。高 128 个字节为特殊功能寄存器区。

MCS-51型单片机芯片有 4 个 8 位并行 I/O端口,其结构特性基本相同。当扩展片外 RAM 和 ROM 时, P0 口分时传送低 8 位地址和 8 位数据, P2 口传送高 8 位地址, P3

口一般作第二功能使用,通常只有 P1 口用作一般 I/O 引脚。

时钟电路和时序部分,节拍、状态、机器周期、指令周期是单片机的定时单位,要掌握它们的概念,了解时钟电路及复位条件、复位电路、复位后的单片机状态。

思考与练习

一、思考题

1.         8051 单片机芯片包含哪些主要逻辑功能部件?各有什么主要功能?

2.         MCS—51 单片机的 /EA 信号有何功能?在使用 8031 时 /EA 信号引脚应如何处理?

3.         MCS—51 单片机有哪些信号需要芯片引脚以第二功能的方式提供?

4.         内部 RAM 低 128 单元划分为哪 3 个主要部分?说明各部分的使用特点。

5.         程序计数器( PC)作为不可寻址寄存器,它有哪些特点?

6.         堆找有哪些功能?堆栈指示器( SP)的作用是什么?在程序设计时,为什么还要对 SP重新赋值?

7.         P0 ~ P3 口在使用上有哪些分工和特点?试比较各口的特点?

8.         MCS 一 5l 单片机运行出错或程序进入死循环,如何摆脱困境?

9.         什么是指令周期,机器周期和时钟周期?如何计算机器周期的确切时间?

二、习题

判断题(指出以下叙述是否正确)

1.用户构建单片机应用系统,只能使用芯片提供的信号引脚。( × )

2.程序计数器( PC)不能为用户使用,因此它就没有地址。( √ )

3.内部 RAM 的位寻址区,只能供位寻址使用而不能供字节寻

址使用。( × )

4.在程序执行过程中,由 PC提供数据存储器的读/写地址。( × )

5. 80C51 共有 21 个专用寄存器,它们的位都是可用软件设置的,因

此是可以进行位 寻址的。( × )

6.对单片机的复位操作就是初始化操作。( √ )

填空题

1.  MCS—51 单片机引脚信号中,信号名称带上划线的表示该信号( 0)或( 低电平)有效。

2.  MCS—51 单片机内部 RAM 的寄存器区共有( 32)个单元,分为( 4)组寄存器,每组( 8)个单元,以( Rn)作为寄存器名称。

3.  单片机系统复位后,( PSW) =00H ,因此内部 RAM 寄存区的当前寄存器是第( 0)组, 8 个寄存器的单元地址为( R0)~( R7)。

4.  通过堆栈操作实现子程序调用,首先要把( PC)的内容入栈,以进行断点保护。调用返回时再进行出栈操作,把保护的断点送回( PC)。

5.   寻址程序状态字的 F0 位,可使用的地址和符号有( PSW.5)、( F0)、( D5)和( F7H.5)。

6.  MCS—51 单片机的时钟电路包括两部分内容,即芯片内的(高增益反相放大器)和芯片外跨接的(晶体振荡器)与(微调电容)。

7.  在 MCS—51 中,位处理器的数据位存储空间是由( SFR)的可寻址位和内部 RAM 为寻址区的( 128)个位。

8.  MCS 一 51 的 4 个 I/ O 口中, P0 是真正的双向口,而其它口则为准双向口,这一区别在口线电路结构中表现在( )的不同上。

三、选择题(在下列各题的 4个选项中,只有一个是正确的,请选择) 1.单片机芯片内提供了一定数量的工作寄存器,这样做的好处不应包括( A) ( A)提高程序运行的可靠性 ( B)提高程序运行速度 ( C)为程序设计提供方便 ( D)减少程序长度

2.内部 RAM 中的位寻址区定义的位是给( A ) ( A)位操作准备的 ( B)移位操作准备的 ( C)控制转移操作准备的 ( D)以上都对 3.对程序计数器 PC 的操作 (A)

( A)是自动进行的 ( B)是通过传送进行的 ( C) 是通过加“ 1” 指令进行的 ( D)是通过减“ 1” 指令进行的 4.以下运算中叶溢出标志 OV没有影响或不受 OV影响的运算是( A) ( A)逻辑运算 ( B)符号数加减法运算 ( C)乘法运算 ( D)除法运算 5.单片机程序存储器的寻址范围是由程序计数器 PC 的位数决定的, MCS—51

的 PC 为 16 位用此其寻址范围是( B) ( A) 4 KB( B) 64 KB( C) 8 KB( D) 128 KB

6 、在算术运算中,与辅助进位位 AC 有关的是( D) ( A)二进制数( B)八进制数 ( C)十进制数 ( D)十六进制数

7.以下有关 PC 和 DPTR 的结论中错误的是( C)

( A) DPTR 是可以访问的而 PC 不能访问 ( B)它们都是 16 位的寄存器

(C) 它们都具有加“ 1” 功能 ( D) DPTR 可以分为 2 个 8 位的寄存器使用,但 PC 不能

8. PC 的值( C)

( A)当前指令前一条指令的地址( B) 当前正在执行指令的地址

( C)下一条指令的地址 (D) 控制器中指令寄存器的地址

9.假定设置堆栈指针 SP 的值为 37H ,在进行子程序调用时把断点地址进栈保护后, SP 的值为( D)

 ( A) 36H ( B) 37H ( C) 38H ( D) 39H

10.在 80C51 中,可使用的堆栈最大深度为( C)

( A) 80 个单元( B) 32 个单元( C) 128 个单元( D) 8 个单元

11.位处理器是单片机面向控制应用的重要体现,下列中不属于位处理器资源的是( D)

( A)位累加器 CY    ( B) 通用寄存器的可寻址位

( C)专用寄存器的可寻址位 ( D)位操作指令集

12.在 MCS—51 单片机的运算电路中,不能为 ALU提供数据的是( D)

( A)累加器 A( B)暂存器( C)寄存器 B( D)状态寄存器 PSW

13.在 MCS—51 中( C)

( A)具有独立的专用的地址线    ( B)由 P0 口和 P1 口的口线作地址线

( C)由 P0 口和 P2 口的口线作地址线 (D) 由 P1 口和 P2 口的口线作地址线