全国变频器维修 全国变频器维修 全国变频器维修 全国变频器维修
8051 单片机的结构和原理
2.1 51 系列单片机的结构
51 单片机*初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。如是市面上出现了各式各样的但均以51 为内核的单片机,倒是Intel 公司自己的单片机却显得逊色了。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51 一致的,在前一章我们已经提到51 单片机在今后很长一段时间内仍是主流,所以我们的教材将还是以51 核为例给大家进行详细的介绍。
2.1.1 51 系列单片机的结构框图
我们假设读者是已经学完了计算机的组成原理,所以下面出现的有关计算机的专有名词
就不做详细介绍了。
我们知道我们PC 机的CPU 是基于冯诺伊曼的体系结构,然而MCU(单片机)、Dsp(数字信号处理器)都是基于哈佛结构的体系结构。哈佛结构与冯诺伊曼结构有很大的不同,在冯诺伊曼体系结构下只有一个地址空间,ROM 和RAM 可以随意安排在这一地址范围内的不同空间,即ROM 和RAM 地址统一分配。CPU 访问存储器时,一个地址对应唯一的存储单元,可能是ROM,也可能是RAM。而哈佛结构下ROM 和RAM 是分开编址,即程序和数据分开保存,访问时用不同的指令加以区分,并可同时访问,在这样的体系结构下有利于提高指令的执行速度。在后面的章节我们将详细介绍单片机的存储器配置。
图2-1 所示为MCS-51 系列单片机的基本结构框图。
从结构框图我们可以看出在这一小块芯片上,集成了一个微型计算机的各个组成部分。这些部分包括:
(1) 一个8 位的微处理器(CPU)。
(2) 片内数据存储器RAM(128B/256B),用以存放可以读/写的数据,如运算的中间结果、*终结果以及欲显示的数据等,SST89 系列单片机*多提供1K 的RAM。
(3) 片内程序存储器ROM/EPROM(4KB/8KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31 等。目前单片机的发展趋势是将RAM 和ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST 公司推出的89 系列单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用,读者可查看书的后面部分。广州科沃—工控维修的120
www.gzkowo.com
(4) 四个8 位并行I/O 接口P0~P3,每个口既可以用作输入,也可以用作输出。
(5) 两个定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。
(6) 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,例如SST89E58RD 就有9 个中断源。
(7) 一个全双工UART(通用异步接收发送器)的串行I/O 口,用于实现单片机之间或单机与微机之间的串行通信。
(8) 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。*高允许振荡频率为12MHz。SST89V58RD *高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。
以上各个部分通过内部数据总线相互连接。
早期的51 系列单片机有十多个品种,目前已发展到数百种,我们可以看看早期单片机的性能
如表2-1 所示,拿它和现代新型单片机比较,我们会发现它们的性能相差很大,可以参见后文的SST89 系列单片机性能。
8051 单片机内部结构如图2-2 所示。一个完整的计算机应该由运算器、控制器、存储器(ROM 及RAM)、数据总线和I/O 接口组成。一般微处理器(如8086)就只包括运算器和控制器两部分。和一般微处理器相比,8051 增加了四个8 位I/O 口、一个串行口、4KB ROM、128BRAM、很多工作寄存器及特殊功能寄存器(SFR),所以单片机具有比微处理器更强大的控制功能,单片机是专为进行控制设计的,而常见的微处理器是用于运算功能的,下图各部分的功能描述
一、中央处理单元(CPU)
和PC 机的CPU 一样,它是单片机的核心,是计算机的控制和指挥中心,由运算器和控制器等部件组成。
1. 运算器
运算器包括一个可进行8 位算术运算和逻辑运算的单元ALU,8 位的暂存器1、暂存器2,8 位的累加器ACC,寄存器B 和程序状态寄存器PSW 等。
ALU:可对4 位(半字节)、8 位(一字节)和16 位(双字节)数据进行操作。能做加、减、乘、除、加1、减1、BCD 数十进制调整及比较等算术运算和与、或、异或、求补及循环移位等逻辑操作。
ACC:累加器ACC 经常作为一个运算数经暂存器2 进入ALU 的输入端,与另一个来自暂存器1 的运算数进行运算,运算结果又送回ACC。除此之外,ACC 在8051 内部经常作为数据传送的中转站。同一般微处理器一样,它是*繁忙的一定寄存器了。在指令中用助记符A 来表示。
PSW:程序状态字寄存器,8 位,用于指示指令执行后的状态信息,相当于一般微处理器的标志寄存器。PSW 中各位状态供程序查询和判别用。详见特殊功能寄存器SFR 中介绍。
B:8 位寄存器,在乘、除运算时,B 寄存器用来存放一个操作数,也用来存放运算后的一部分结果;若不做乘、除运算时,则可作为通用寄存器使用。
另外,8051 片内还有一个布尔处理器,它以PSW 中的进位标志位CY 为其累加器(在布尔处理器及其指令中以C 代替CY),专门用于处理位操作:可执行置位、位清0、位取反、位等于1 转移、位等于0 转移、位等于1 转移并清0 以及位累加器C 与其他可位寻址的空间之间进行信息传送等位操作,也能使C 与其他可寻址位之间进行逻辑“与”、逻辑“或”操作,结果存放在进位标志位(位累加器)C 中。
2.控制器
控制器包括程序计数器PC、指令寄存器IR、指令译码器ID、振荡器及定时电路等。
程序计数器PC:由两个8 位的计数器PCH 及PCL 组成,共16 位。PC 实际上是程序的字节地址计数器,PC 中的内容是将要招待的下一条指令的地址。改变PC 的内容就可改变程序执行的方向。PC 可对64KB 的ROM(程序存储器)直接寻址,也可对8051 片外RAM(数据存储器)寻址。
指令寄存器IR 及指令译码器ID,由ID 对指令译码并送PLA 产生一定序列的控制信号,以执行指令所规定的操作。例如,控制ALU 的操作、在8051 片内工作寄存器间传送数据,以及发出ACC 与I/O 口(P0~P3)或存储器之间通信的控制信号等等。
振荡器及定时电路:8051 单片机片内有振荡电路,只需外接石英晶体和频率微调电容(2个30pF 左右),其频率范围为1.2MHz~12MHz。该脉冲信号就作为8051 工作的基本节拍,即时间的*小单位。8051 同其他计算机一样,在基本节拍的控制下协调地工作,就像一个乐队按着指挥的节拍演奏一样。
二、存储器
8051 片内有ROM(程序存储器,只能读)和RAM(数据存储器,可读可写)两类,它们有各自独立的存储地址空间,与一般微机的存储器配置方式很不相同。
1、 程序存储器(ROM)
8051 及8751 的片内程序存储器容量为4KB,地址从0000H 一开始,用于存放程序和表格常数。
2、 数据存储器(RAM)
8051/8751/8031 片内数据存储器均为128B,地址为00H~7FH,用于存放运算的中间结果、数据暂存以及数据缓冲等。
在这128B 的RAM 中,有32 个字节单元可指定为工作寄存器,这同一般微处理器不同,8051 的片内RAM 和工作寄存器排在一个队列里统一编址。
由图2-2 可见,8051 单片机内部还有SP,DPTR,PCON,…,IE,IP 等特殊功能寄存器,它们也同128 字节RAM 在一个队列里编址,地址为80H~FFH。在这128 字节RAM 单元中有21个特殊功能寄存器(SFR),这些特殊功能寄存器还包括P0~P3 口锁存器。
如何使用RAM 中的32 个工作寄存器和特殊功能寄存器,后面将详细介绍。
三、I/O 接口
8051 有四个8 位并行接口,即P0~P3。它们都是双向端口,每个端口各有8 条I/O 线,为可输入/输出。P0~P3 口四个锁存器同RAM 统一编址,可以把I/O 口当作一般特殊功能寄存器来寻址。
2.2 51 单片机的引脚及其功能
MCS-51 系列中各种芯片的引脚是互相兼容的,如8051,8071 和8031 均采用40 脚双列直插封装(DIP)方式。当然,不同芯片之间引脚功能也略有差异。8051 单片机是高性能单片机,因为受到引脚数目的限制,所以有不少引脚具有第二功能,如图2-3 所示。
各引脚功能简要说明如下:
1. 电源引脚Vcc 和Vss
Vcc(40 脚):电源端,为+5V。
Vss(20 脚):接地端。
2. 时钟电路引脚XTAL1 和XTAL2
XTAL2(18 脚):接外部晶体和微调电容的一端;在8051 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查8051/8031 的振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号
输出。
XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。
3. 控制信号引脚RST,ALE,PSEN 和EA
RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将+5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。
ALE/PROG(ADDRESS LATCH ENABLE/PROGRAMMING,30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC 的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。
平时不访问片外存储器时,ALE 端也以振荡频率的1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。
ALE 端的负载驱动能力为8 个LS 型TTL(低功耗甚高速TTL)负载。
此引脚的第二功能PROG 在对片内带有4KB EPROM 的8751 编程写入(固化程序)时,作为编程脉冲输入端。
PSEN(PROGRAM STORE ENABLE,29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件图)。PSEN 端有效,即允许读出EPROM/ROM 中的指令码。PSEN 端同样可驱动8 个LS 型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROM/ROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上工作正常。
EA#/Vpp(ENABLE ADDRESS/VOLTAGE PULSE OF PROGRAMING,31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。
当EA 引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自动转去执行片外程序存储器内的程序。
当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,需外扩EPROM,此时必须将EA 引脚接地。
此引脚的第二功能是Vpp 是对8751 片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端。
4.输入/输出端口P0/P1/P2/P3