1、第三章MCS5l 单片机的结构和原理前面介绍了微处理器、微计算机的原理和有关的概念。从这一章开始详细介绍 MCS51 单片机的硬件、软件、接口及其开发与应用技术。第一节第一节MCS51 系列单片机的结构系列单片机的结构MCS51 是 Intel 公司的一种单片机系列的名称。 继 1976 年该公司推出 MCS48 系列 8 位单片机之后,1980 年又推出了 MCS51系列高档 8 位单片机。属于这一系列的单片机芯片有许多种:如8031、8051、875l、80C51BH、80C31BH8032、 8052、 8752、 80C32、 80C52 还有其他公司的产品,AT89C、PHILIP、
2、Winbond 等,它们的基本组成、基本性能和指令系统都是相同的。为了叙述方便,今后如不作说明,则常用 8051代表 51 系列单片机。一、MCS51 单片机的基本组成下图 MCS51 系列单片机的基本功能结构方框图在一小块芯片上,集成了一个微型计算机的各个组成部分,每一片单片机包括:一个 8 位的微处理器 CPU。片内数据存储器 RAM(128B256B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等。片内程序存储器 ROMEPROM(4KB8KB), 用以存放程序、一些原始数据和表格。但也有一些单片机内部不带 ROMEPBOM,如 8031、8032、80C31 等
3、。四个 8 位并行 IO(输入输出)接 口 P0P3,每个口可以用作输入,也可以用作输出。两个或三个定时计数器, 每个定时计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。五个中断源的中断控制系统。一个全双工 UART(通用异步接收发送器)的串行 IO 口, 可实现单片机与单片机或其它微机之间串行通信。片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许振荡频率为 12MHz。注:新型的单片机晶振可达 24MHz, 甚至更高!以上各个部分通过内部数据总线相连接。MCS5l 系列单片机有十多种产品,其性能如下表所示。M
4、CS51 系列单片机性能表掩膜型:805l 片内除具有 CPU(包括控制器与运算器)外,还包括 ROM、RAM、48 位并行口、串行口和 2l 6 位定时计数器,它是一片功能很强的单片微计算机;但由于 8051 片内为掩膜 ROM,内部程序不能改写,不便于实验开发。如在实验调试中使用 8051,需在片外另扩可改写的 EPROM。EPROM 型:8751 具有片内 EPROM,是真正的单片机,但由于价格较贵,所以用的较少。无 ROM 型:8031 只是片内没有 ROM,但它在市场上的价格很低,只需在片外扩展一片 EPROM 就构成了系统,所以用得非常广泛,开发 MCS5l 的产品绝大多用 803
5、l。FLASH 型:内部有 FLASH ROM 的程序存贮器,目前则大多采用 89C51 ( 4K )89C52(8K) , 89C1051(1K)89C2051(2K).低功耗型:表中单片机型号带“C”则表示所用工艺为 CMOS,具有低功耗的特点。 如 8051 功耗为 630mW, 而 80C51 的功耗只有 120mW, 它用于低功耗的便携式产品或航天技术领域中。MCS5l 系列单片机的温度适用范围也较微处理器芯片 Z80、8080 等宽,其温度范围:民品(商业用)070工业品一 4085军用品一 55125一般市场销售品多为工业品,其稳定性、抗干扰性能都优于微处理器芯片。二、MCS5l
6、 单片机内部结构805187518031 芯片的外部引脚和指令系统完全兼容,其内部结构除 ROMEPROM 不同外其余完全相同。805l 单片机内部结构如图所示。一个完整的计算机应该由运算器、 控制器、 存储器(RoM 及 RAM)和 IO 接口组成。 一般微处理器(如 Z80)只包括运算器和控制器两部分。和一般微处理器相比,805l 增加了四个 8 位 IO口、一个串行口、4KB ROM、128B RAM 和很多工作寄存器及特殊功能寄存器(SFR)。各部分的功能简述如下:(一)8051CPU 内部结构1运算器包括一个可进行 8 位算术运算和逻辑运算的 ALU 单元,8 位的暂存器 1、暂存器
7、 2、8 位的累加器 ACC,寄存器 B 和程序状态寄存器 PSW 等。ALU:可对 4 位(半字节)、8 位(一字节)和 16 位(双字节)数据进行操作。如能做加、减、乘、除、加 1、减 1、BCD 数十进制调整及比较等算术运算和逻辑与、或、异或、求补及循环移位等逻辑操作。ACC:累加器 ACC,经常作为一个运算数经暂存器 2 进入 ALU的一个输入端,与另一个进入暂存器 l 的运算数进行运算,运算结果又送回 ACC。 除此之外, ACC 在 8051 内部经常作为数据传送的中转站,同一般微处理器一样,它是最繁忙的一个寄存器了。在指令中用助记符 A 来表示。PSW:程序状态字寄存器,8 位,
8、用于标志指令执行后的信息状态,相当于一般微处理器的标志寄存器。PSW 中各位状态供程序查询和判别用。详见特殊功能寄存器 SFR 中介绍。B:8 位寄存器,在乘、除运算时,B 寄存器用来存放一个操作数;也用来存放运算后的一部分结果;若不作乘、除运算时,则可作为通用寄存器使用。另外,805l 片内还有一个布尔处理器,它以 PSw 中的进位标志位 C 为其累加器, 专门用于处理位操作: 可执行置位、 位清 0、位取反、位等于 1 转移、位等于 0 转移、位等于 l 转移并清 0以及进位标志位 C 与其他可位寻址的空间之间进行信息传送等位操作, 也能使 C 与其他可寻址位之间进行逻辑与、 逻辑或操作,
9、结果存放在进位标志位(位累加器)C 中。2控制器控制器包括程序计数器 PC、指令寄存器 IR、指令译码器 ID、振荡器及定时电路等。程序计数器 PC:它由两个 8 位的计数器 PCH 及 PCL 组成,共16 位。PC 实际上是程序的字节地址计数器,PC 中的内容是将要执行的下一条指令的地址。改变 PC 中的内容就可改变程序执行的流向。PC 可对 64K 的 ROM(程序存储器)直接寻址,也可对 8051 片外 RAM(数据存储器)寻址。指令寄存器 IR 及指令译码器 ID:由 PC 中的内容指定 ROM 地址, 取出来的指令经指令寄存器 IR 送至指令译码器 ID, 由 ID对指令译码并送
10、PLA 产生一定序列的控制信号,以执行指令所规定的操作。例如,控制 ALU 的操作、传送 805l 片内工作寄存器间数据, 以及发出 ACC 与 IO 口( P0 口一 F3 口)或存储器之间通信的控制信号等等。振荡器及定时电路:8051 单片机片内有振荡电路,只需外接石英晶体和频率微调电容(2 个 30pF 左右),其频率范围为 1212MHz,该脉冲信号就作为 8051 工作的最基本节拍,即时间的最小单位。805l 同其他计算机一样,在基本节拍的控制下协调地工作,就象一个乐队按着指挥的节拍演奏一样。3存储器805l 片内有 ROM(程序存储器,只能读)和 RAM(数据存储器,可读、可写)两
11、类,它们有各自独立的存储地址空间,与一般微机的存储器配置方式很不相同。(1)程序存储器(ROM)8051 及 875l 的片内程序存储器容量为 4K 字节, 地址从 0000H开始,用于存放程序和表格常数。(2)数据存储器(RAM)805187518031 片内数据存储器均为 128 字节, 地址为 00H一 7FH, 用于存放运算的中间结果、 数据暂存以及数据缓冲等。在这 128 字节的 RAM 中,有 32 个字节单元可指定为工作寄存器,这同一般微处理器不同。8051 的片内 RAM 和工作寄存器排在一个队列里统一编址。8051 单片机内部中还有 SP、DPTR、PCON、IE、IP 等特
12、殊功能寄存器,它们也同 128 字节 RAM 在一个队列里编址,地址 80HFFH。 在这 128 字节 RAM 单元中有 21 个特殊功能寄存器(SFR),这些特殊功能寄存器还包括 P0P3 口锁存器。如何使用 RAM 中的 32 个工作寄存器和特殊功能寄存器,后面将详细介绍。4IO 接口8051 有四个 8 位并行接口即 P0P3,它们都是双向端口,每个端口各有 8 条 IO 线,均可输入输出。P0P3 口四个锁存器同 RAM 统一编址,可以把 IO 口当作一般特殊功能寄存器来寻址。第二节第二节MCS5l 单片机引脚及其功能单片机引脚及其功能MCS5l 系列中各种芯片的引脚是互相兼容的,
13、如 8051、 8751和 803l 均采用 40 引脚双列直插封装(DIP)方式。当然,不同芯片之间引脚功能也略有差异。805l 单片机是高性能单片机,因为受到引脚数目的限制,所以有不少引脚具有第二功能,其中有些功能是 875l 芯片所专有的,如图所示。各引脚功能简要说明如下:1电源引脚 Vcc 和 VssVcc(40 脚):电源端,为十 5V。Vss(20 脚):接地端。2时钟电路引脚 XTAL1(19)和 XTAL2(18 脚):接外部晶体和微调电容的一端。在 805l 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外时钟脉冲。要检
14、查 80518031 的振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。XTAL1(19 脚):接外部晶体和微调电容的另一端。 在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。3控制信号引脚 RST、ALE、PSEN 和 EARSTVp。(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持两个机器周期(24 个时钟振荡周期)的高电平时, 就可以完成复位操作。RST 引脚的第二功能是 Vp。 ,即备用电源的输入端。当主电源 Vcc 发生故障,降低到低电平规定值时,将十 5V 电源自动接入 RST 端,为 RAM 提供备用电源,以保证存储在
15、RAM中的信息不丢失, 以便复电后能继续正常运行。ALEPROG(ADDRESS LATCH BNABLEPRoGRAMMING,30 脚):地址锁存允许信号端。当 8051 上电正常工作后, ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率 fosc 的 l6。CPU 访问片外存储器时,ALE 输出信号作为锁存低 8 位地址的控制信号。在 CPU 访问片外数据存储器时,每取指一次(一个机器周期)会丢失一个脉冲。平时不访问片外存储器时,ALE 端也以 16 的振荡频率固定输出正脉冲,因而 ALE 信号可以用作对外输出时钟或定时信号。如果你想看一下 8051 芯片的好坏,可用示波器查看 A
16、LE 端是否有脉冲信号输出, 如有脉冲信号输出,则8051803l 基本上是好的。ALE端的负载驱动能力为8个LS型TTL(低功耗甚高速TTL)。此引脚的第二功能 PROG 是对片内带有 4K EPROM 的 8751编程写入(固化程序)时,作为编程脉冲输入端。PSEN(PROGRAMSTOREENABLE,29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引脚接 EPROM 的 OE 端,PSEN 端有效,即允许读出 EPROMROM 中的指令码。CPU 在从外部 EPROMROM 取指期间, PSEN 信号在每个机器周期(12 个时
17、钟周期)中两次有效。不过,在访问片外 RAM 时,要少产生两次 PSEN 负脉冲信号。PSEN 端同样可驱动 8 个 LS 型 TTL。要检查一个 80518031 小系统上电后 CPU 能否正常到 EPROMROM 中读取指令码,也可用示波器看 PSEN 端有无脉冲输出,如有,说明基本上工作正常。EAVPP(ENABLE ADDRESSVOITAGE PULSE 0FPROGRAMMING,3l 脚):外部程序存储器地址允许输入端固化编程电压输入端。当 EA 引脚接高电平时, CPU 只访问片内 EPROMROM并执行内部程序存储器中的指令,但在 PC 的(程序计数器)值超过 0FFFH(对
18、 87518051 为 4K)时,将自动转向执行片外程序存储器内的程序。当输入信号 EA 引脚接低电平(接地)时,CPU 只访问外部EPROMROM 并执行外部程序存储器中的指令, 而不管是否有片内程序存储器。对于无片内 ROM 的 8031 或 8032,须外扩 EPROM,此时必须将 EA 引脚接地。如使用有片内 ROM的 805l,外扩 EPROM 也是可以的,但也要使 EA 接地。此引脚的第二功能,是对 875l 片内 EPROM 固化编程时,作为施加较高编程电压(一般 2lV)输入端。4IO(输入输出)端口(Port)P0、P1、P2 和 P3P0 口(P0.0 一 P07,3932
19、 脚):P0 口是一个漏极开路的 8 位难双向 IO 端口。作为漏极开路的输出端口,每位能驱动 8 个 LS 型 TTL 负载。当 P0 口作为输入口使用时,应先向口锁存器(地址 80H)写入全 1,此时 P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写 1,这就是准双向的含义。在 CPU 访问片外存储器(8031 片外 EPROM 或 RAM)时,P0口是分时提供低 8 位地址和 8 位数据的复用总线。在此期间,P0 口内部上拉电阻有效。对于 8751(89CXX)单片机,因不需外扩 EPROM,所以 P0口可作为一个数据输入输出口。P1 口(P10 一 P17,18 脚):P
20、1 口是一个带内部上拉电阻的 8 位准双向 IO 端口。 P1 口的每一位能驱动(吸收或输出电流) 4 个 LS 型 TTL 负载。在Pl口作为输入口使用时, 应先向P1口锁存器(地址90H)写入全 1,此时 P1 口引脚由内部上拉电阻拉成高电平。P2 口(P20 P27,2128 脚):P2 口是一个带内部上拉电阻的 8 位准双向 I0 端口。 P2 口的每一位能驱动(吸收或输出电流) 4 个 LS 型 TTL 负载。在访问片外 EPROMROM 时,它输出高 8 位地址。P3 口(P30 一 P37,10 一 17 脚):P3 口是一个带内部上拉电阻的 8 位准双向 IO 端口。 P3 口的各位能驱动(吸收或输出电流) 4 个 LS 型 TTL 负载。P3 口与其他 IO 端口有很大区别,它除作为一般准双向IO 口外,每个引脚还具有专门的功能,见表。口口线线第第二二功功能能P30RXD(串行口输入)P31TxD(串行口输出)P32INT0(外部中断 0 输入)P3. 3INT1(外部中断 1 输入)P3. 4T0(定时器 0 的外部输入)P3. 5T1(定时器 1 的外部输入)P3. 6WR(片外数据存储器写选通控制输出)P3. 7RD(片外数据存储器读选通控制输出)