1、MCS-51 单片机内部结构 8051 是 MCS-51 系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051 单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM):8051 内部有 128 个 8 位用户数据存储单元和 128 个
2、专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(ROM):8051 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。定时/计数器(ROM):8051 有两个 16 位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8051 共有 4 组 8 位 I/O 口(P0、 P1、P2 或 P3),用于对外部数据的传输。全双工串行口:8051 内置一个全双工串行通信口
3、,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051 具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有 2 级的优先级别选择。时钟电路:8051 内置最高频率达 12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但 8051 单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL 的 MCS-51 系
4、列单片机采用的是哈佛结构的形式,而后续产品 16 位的MCS-96 系列单片机则采用普林斯顿结构。下图是 MCS-51 系列单片机的内部结构示意图。 MCS-51 的引脚说明: MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构,右图是它们的引脚配置,40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4 组 8 位共32 个 I/O 口,中断口线与 P3 口线复用。现在我们对这些引脚的功能加以说明:Pin20:接地脚。Pin40:正电源脚,正常工作或对片内 EPROM 烧写程序时,接+5V 电源。Pin19:时钟 XTA
5、L1 脚,片内振荡电路的输入端。Pin18:时钟 XTAL2 脚,片内振荡电路的输出端。8051 的时钟有两种方式,一种是片内时钟振荡方式,但需在 18 和 19 脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取 10p-30p。另外一种是外部时钟方式,即将 XTAL1 接地,外部时钟信号从 XTAL2 脚输入。 输入输出(I/O)引脚:Pin39-Pin32 为 P0.0-P0.7 输入输出脚,Pin1-Pin1 为 P1.0-P1.7 输入输出脚,Pin21-Pin28 为P2.0-P2.7 输入输出脚,Pin10-Pin17 为 P3.0-P3.7 输入输出脚,这些输入输出
6、脚的功能说明将在以下内容阐述。Pin9:RESET/Vpd 复位信号复用脚,当 8051 通电,时钟电路开始工作,在 RESET 引脚上出现 24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器 PC 指向 0000H,P0-P3 输出口全部为高电平,堆栈指钟写入 07H,其它专用寄存器被清“0”。RESET 由高电平下降为低电平后,系统即从 0000H 地址开始执行程序。然而,初始复位不改变 RAM(包括工作寄存器 R0-R7)的状态,8051 的初始态如下表:特殊功能寄存器 初始态 特殊功能寄存器 初始态 ACC 00H B 00H PSW 00H SP 07H DPH 00H
7、 TH0 00H DPL 00H TL0 00H IP xxx00000B TH1 00H IE 0xx00000B TL1 00H TMOD 00H TCON 00H SCON xxxxxxxxB SBUF 00H P0-P3 1111111B PCON 0xxxxxxxB 8051 的复位方式可以是自动复位,也可以是手动复位,见下图。此外,RESET/Vpd 还是一复用脚,Vcc 掉电期间,此脚可接上备用电源,以保证单片机内部 RAM 的数据不丢失。Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE 端将有一个 1/6 时
8、钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE 会跳过一个脉冲。如果单片机是 EPROM,在编程其间,将用于输入编程脉冲。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的 16 位地址数据将出现在 P0和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU 读入并执行。Pin31:EA/Vpp 程序存储器的内外部选通线,8051 和 8751 单片机,内置有 4kB 的程序存储器,当 EA 为高电平并且程序地址小于 4kB 时,读取内部程序存储器指令数据,而超过 4kB 地址则读取外部指令数据。如 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的 8031,EA 端必须接地。在编程时,EA/Vpp 脚还需加上 21V 的编程电压。