MCS-51单片机是由INTEL公司的MCS-48系列发展而来的。后来INTEL公司将单片机的核心技术转让给了许多公司,所以现在有许多公司生产51系列的兼容单片机,如飞利浦、现代公司等,目前国内比较流行的是由美国Atmel公司的89C51系列,这是一种带有Flash ROM的单片机。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Har-vard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL公司的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
MCS-51单片机的内部总体结构其基本特性如下:8位CPU、片内振荡器、4KB ROM、128B RAM、21个特殊功能寄存器、32根I/O线、可寻址的64KB外部数据、程序存储空间、2个16位定时器、计数器。中断结构:具有2个优先级、5个中断源1个全双口串行口位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。除128B RAM、4KB ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,剩下的就是CPU的全部组成。把4KB ROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031,如果将ROM置换为Flash存储器或E2 PROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机。单片机各部分是通过内部的总线有机地连接起来的。图3-12是MCS-51系列单片机的内部结构示意图。
单片机包含中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
(1)中央处理器
CPU是整个单片机的核心部件,它是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作,CPU由运算器和控制器组成。
运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个8位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志寄存器PSW也是一个8位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。由于PSW存放程序执行中的状态,故又叫程序状态字。运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理器)。
图3-12 MCS-51系列单片机内部结构示意图
控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。程序计数器PC是由16位寄存器构成的计数器。要单片机执行一个程序,就必须把该程序按顺序预先装入存储器的某个区域。单片机动作时应按顺序一条条取出指令来加以执行。因此,必须有一个电路能找出指令所在的单元地址,该电路就是程序计数器PC。当单片机开始执行程序时,给PC装入第一条指令所在地址,它每取出一条指令(如为多字节指令,则每取出一个指令字节),PC的内容就自动加1,以指向下一条指令的地址,使指令能顺序执行。只有当程序遇到转移指令、子程序调用指令,或遇到中断时,PC才转到所需要的地方去。8051CPU指定的地址,从ROM相应单元中取出指令字节放在指令寄存器中寄存,然后,指令寄存器中的指令代码被译码器译成各种形式的控制信号,这些信号与单片机时钟振荡器产生的时钟脉冲在定时与控制电路中相结合,形成按一定时间节拍变化的电平和时钟,即所谓控制信息,在CPU内部协调寄存器之间的数据传输、运算等操作。
(2)数据存储器
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以用户能使用的RAM只有128个,可用于存放读写的数据,运算的中间结果或用户定义的字型表。
单片机的数据存储器由RAM组成。其最大容量可扩展到64KB,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。8051内部数据存储器地址由00H~FFH共有256B的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H~7FH(即0~127)。而用做特殊功能寄存器的地址为80H~FFH。在此256B中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从00H~1FH安排了4组工作寄存器,每组占用8个RAM字节,记为R0~R7。究竟选用那一组寄存器,由程序状态字PSW中的RS1和RS0来选用。在这两位上放入不同的二进制数,即可选用不同的寄存器组。
(3)程序存储器
8051共有4096个8位掩膜ROM,用于存放用户程序、原始数据或表格。程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。如用助记符编写的命令MOV A,#20H,换成机器认识的代码74H、20H:(写成二进制就是01110100B和00100000B)。在单片机处理问题之前必须将事先编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外同时设置。由于程序计数器PC为16位,使得程序存储器可用16位二进制地址,因此,内外存储器的地址最大可从0000H~FFFFH。8051内部有4KB的ROM,就占用了由0000H~0FFFH的最低4KB,这时片外扩充的程序存储器地址编号应由1000H开始,如果将8051当做8031使用,不利用片内4KB ROM,全用片外存储器,则地址编号仍可由0000H开始。不过,这时应使8051的第31脚(即EA脚)保持低电平。当EA为高电平时,用户在0000H~0FFFH范围内使用内部ROM,大于0FFFH后,单片机CPU自动访问外部程序存储。
(4)定时/计数器
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
(5)全双工串行口
8051内置一个全双工串行通信口,用于与其他设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
(6)中断系统
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
(7)时钟电路
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
MCS-51的引脚说明:(www.xing528.com)
MCS-51系列单片机引脚中除必要的电源、地等引脚外还包括外接晶振接线端XTAL1、XTAL2,复位引脚RST,片外ROM选通输出端PSEN等控制引脚,8031、8051及8751均采用40引脚封装的双列直插(DIP)结构,如图3-13所示为它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在对这些引脚的功能加以说明:
Pin20:接地端。
Pin40:正电源端,正常工作或对片内EPROM烧写程序时,接+5V电源。
Pin19:时钟XTAL1脚,片内振荡电路的输入端。
Pin18:时钟XTAL2脚,片内振荡电路的输出端。
8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18脚和19脚外接石英晶振(2~12MHz)和振荡电容,振荡电容的值一般取10~30pF。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
图3-13 MCS-51系列单片机引脚配置
输入输出(I/O)引脚:
Pin39~Pin32为P0.0~P0.7输入输出脚,Pin1~Pin8为P1.0~P1.7输入输出脚,Pin21~Pin28为P2.0~P2.7输入输出脚,Pin10~Pin17为P3.0~P3.7输入输出。
Pin9:RST复位信号复用脚,当8051通电,时钟电路开始工作,在RST引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0~P3输出口全部为高电平,堆栈时钟写入07H,其他专用寄存器被清“0”。RST由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0~R7)的状态。8051的复位方式可以是自动复位,也可以是手动复位,此外,RST还是一复用脚,VCC掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
Pin30:ALE/PROG。当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程期间,将用于输入编程脉冲。
Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
Pin31:程序存储器的内外部选通线,8051和8751单片机,内置有4KB的程序存储器,当为高电平并且程序地址小于4KB时,读取内部程序存储器指令数据,而超过4KB地址则读取外部指令数据。如为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,端必须接地。
MCS-51共有7种寻址方式,现介绍如下:
1)立即寻址:操作数就写在指令中,和操作码一起放在程序存储器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址。
2)寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名来表示操作数地址。
3)直接寻址:操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。
4)寄存器间接寻址:操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。
5)变址寻址:指定的变址寄存器的内容与指令中给出的偏移量相加,所得的结果作为操作数的地址。
6)相对寻址:由程序计数器中的基地址与指令中提供的偏移量相加,得到的为操作数的地址。
7)位寻址:操作数是二进制中的某一位,其位地址出现在指令中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。