资源预览内容
第1页 / 共93页
第2页 / 共93页
第3页 / 共93页
第4页 / 共93页
第5页 / 共93页
第6页 / 共93页
第7页 / 共93页
第8页 / 共93页
第9页 / 共93页
第10页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十一章 MCS-51单片机系统扩展,11.1 MCS-51系列单片机介绍,MCS-51单片机是美国intel公司在1980年推出的高性能8位单片机,它有51 和52两个系列。 对于51系列,主要有8031、8051、8751三种机型,它们的引脚和指令系统完全相同,只是片内程序存储器的容量不同,8031芯片内部没有ROM,8051芯片内部代4KB的ROM,8751芯片内部代4KB的EPROM。51子系列的特点是:,18位CPU。 2片内代128B的数据存储器。 3程序存储器寻址空间为64KB。 4数据存储器寻址空间为64KB。 5128个用户可以按“位”寻址的位空间。 621个特殊功能寄存器。 74个8位的I/O口。 8两个16位的定时/计数器。 9两个优先级的5个中断源。 10一个全双工的串行接口。 11片内带振荡器电路,频率范围1.2M12M,外加晶振就可工作。 12单一+5V电源。,对于52系列,有8032、8052、8752三种机型,与51系列不同在于片内数据存储器增加到256B;8032芯片内部不代ROM,8052芯片内部代8KB ROM,8752芯片内部代8KB EPROM。52系列芯片内部代3个16位的定时/计数器,6个中断源。 在实际使用中,由于8031(8032)内部没有ROM,8051(8052)内部仅代ROM,不方便程序修改,在不需要系统扩展的嵌入式控制系统中,8751(8752)使用较多。 美国ATMEL公司生产的AT89C51(AT89C52)系列单片机内部代4K(8K) Flash,目前在8位机市场上使用也非常广泛。 由于8051是最早、最典型的产品,其它的单片机系列多是在8051的基础上进行功能增减,所以本书以8051为例来讲述MCS-51系统单片机的C语言程序设计。,11.2 MCS-51单片机的外部引脚和总线,MCS-51系列单片机有40个引脚,采用双列直插式封装,具体如图11.1所示。各引脚功能介绍如下:,11.2.1 输入/输出引脚,1P0口(引脚3932) P0口包括P0.0P0.7共8个引脚,在不扩展I/O口和片外存储器时,做I/O口使用;在有I/O扩展或片外存储器时,分时做8位数据线和地址总线的低8位(A0A7)。 2P1口(引脚18) P1口包括P1.0P1.7共8个引脚,是MCS-51单片机唯一的专用I/O口线。在简单的嵌入式控制系统中,经常用它来控制外围设备。,3P2口(2128脚) P2口包括P2.0P2.7 8个引脚,在系统进行存储器扩展时做地址总线的高8位(A8A15),如果存储器扩展时不需要16位地址总线,如扩展容量小于64K时,省下的P2口可做普通I/O口线。 4P3口(1017脚) P3口包括P3.0P3.7 8个引脚,除做普通I/O口线外,每个引脚还有第二功能,详见7.1.4节介绍。,11.2.2 MCS-51单片机的控制线,MCS-51单片机的控制线主要有: 1ALE/PROG(30脚) 该信号是地址锁存信号输出端,ALE在每个机器周期输出两次,在访问片外程序存储器时,下降沿用于锁存P0口输出的地址总线低8位(A0A7),在不访问片外程序存储器时,可做为时钟脉冲使用或做定时。在访问片外数据存储器时,ALE脉冲会跳空一次,此时不能做时钟脉冲。对于有片内EPROM的51单片机,该引脚做编程脉冲PROG的输入端。 2(29脚) 片外程序存储器读选通信号,低电平有效。在从片外程序存储器读指令或数据时,该信号每个机器周期有效两次,指令或数据通过P0口读回。在访问片外数据存储器时,该信号无效。,3 RST/(9脚) RST是复位信号,高有效,当RST保持10ms以上高电平,可保证系统可靠复位。是备用电源,该引脚可接备用电源,当故障或系统电压过低时保证RAM中数据不丢失。 4/(31引脚) 是片外程序存储器选择端,=0,选片外程序存储器,=1,选片内程序存储器。 是片内EPROM编程电源,一般接+21V 5和(40和20引脚) 是+5V,是5V地 6XTAL1和XTAL2(19和18脚) 外接晶振,MCS-51常用6M或11.0592M。,11.2.3 MCS-51单片机的片外总线,MCS-51单片机很多引脚是为了系统扩展而设的,这些引脚构成了片外地址总线、数据总线和控制总线,其中: 1地址总线 地址总线宽度为16位,可以访问64K的存储器空间。由P0经锁存器提供地址总线的低8位(A0A7),由P2提供地址总线的高8位(A8A15)。 2数据总线 数据总线宽度为8位,由P0口提供。 3控制总线 控制总线由P3口在第二功能状态下提供,此外还有RST、ALE和四根控制线。,11.2.4 MCS-51单片机存储器结构,MCS-51单片机存储器分程序存储器和数据存储器两种,每种存储器又有片上和片外之分。下面分别介绍。 1程序存储器 (1)程序存储器的编址与访问 程序存储器用于存放单片机工作时的程序,单片机工作时先由用户编制好程序和表格、常数,把它存放在程序存储器中,然后在控制器的控制下,一次从程序存储器中取出指令送到CPU中执行,实现相应的功能。为此,设有一个专用的程序计数器PC,用以存放要执行的指令的地址,它具有自动计数的功能,每取出一条指令,它的内容会自动加1,以指向下一条要执行的指令,从而实现从程序存储器中依次取出指令来执行。由于MCS-51单片机的程序计数器为16位,因此,程序存储器地址空间为64KB。,MCS-51单片机的程序存储器,从物理结构上可分为片内和片外二种,对于片内程序存储器,在MCS-51系列中,不同的芯片各不相同,8031 和8032 内部没有ROM,8051内部有4KB的ROM,8751内部有4KB的EPROM,8052内部有8KB 的ROM, 8752内部有8KB 的EPROM。 对于内部没有ROM的8031 和8032芯片,工作时只能扩展外部ROM,最多可扩展64KB,地址范围为0x00000xffff,对于内部有ROM 的芯片,根据情况也可以宽展外部ROM ,但内部的ROM和外部的ROM共用64KB的存储空间。其中,片内程序存储器地址空间和片外程序存储器的低地址空间重叠。51 子系列重叠区域为0x00000x0fff,52子系列重叠区域为0x00000x1fff,MCS-51 程序存储器编址如图11.2所示。,单片机在执行指令时,对于低地址部分,是从片内程序存储器取指令,还是从片外程序存储器取指令,是根据单片机芯片上的片外程序存储器选用引脚电平的高低来决定的,接低电平,则从片外程序存储器取指令,接高电平,则从片内程序存储器取指令。对于8031和8032芯片,只能保持低电平,指令只能从片外程序存储器取得。 (2) 程序存储器的7个特殊地址 在64KB程序存储器中,有7个单元有特殊用途,第一个单元是0x0000单元,因MCS-51系列单片机复位后PC的内容为0x0000 ,故单片机复位后将从0x0000 单元开始执行程序。程序存储器的0x0000单元地址是系统程序的启动地址,用户一般放一条绝对转移指令,转到用户设计的主程序的起始地址。另外6个单元对应于6个中断源(51子系列为5个)。分别对应中断服务程序的入口地址,具体情况如表11.1所示。在用C51编中断服务程序时这些地址是看不到的,而是用中断向量号来代表,具体情况如表11.1所示。,表11.1所示的6个地址之间仅隔8个单元,用于存放中断服务程序往往不够用。用汇编语言编程这里通常放一条绝对转移指令,转到真正的中断服务程序。用C51编程则由编译器决定,用户不用考虑。,2数据存储器 数据存储器在单片机中用于存取程序执行时所需的数据,它从物理结构可分片上数据存储器和片外数据存储器。两个部分在编址和访问方式上各不相同,其中片内数据存储器又可分为多个部分,采用多种方式访问。 (1)片内数据存储器 MCS-51系列单片机的片内数据存储器除了RAM块外,还有特殊功能寄存器(SFR)块。对于51 子系列,前者有128 个字节,编址为0x000x7f;后者也占128个字节,编址为0x800xff;二者连续不重叠。对于52子系列,前者有256 字节,编址为0x000xff;后者也有128 字节,编址为0x800xff;后者与前者的后128 字节编址重叠,访问时通过不同的指令相区分。,片内数据存储器按功能可分为以下几个组成部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包括堆栈区。具体分配情况如图11.3所示。 工作寄存器组区 0x000x1f单元为工作寄存器组区,共32个字节,工作寄存器也称为通用寄存器,用于临时寄存8位信息。工作寄存器共有4组,称为0组、1组、2组和3组。每组8个寄存器,依次用R0R7 表示。也就是说, R0可能表示0 组的第一个寄存器(地址为0x00),也可能表示1组的第一个寄存器(地址为0x08),还可能表示2组、3组的第一个寄存器(地址分别为0x10,0x18),使用哪一组当中的寄存器由程序状态寄存器PSW中的RS0和RS1两位来选择。,在用C51编程时仅在编写中断服务函数时可以选择使用哪一组工作寄存器组。就是在中断向量后面加一个03的数字表示使用0组3组的工作寄存器组。但我们也可以不加这个数字,由编译器自动选择。,位寻址区 0x200x2f为位寻址区,共16字节,128位。这128位每位都可以按位方式使用,每一位都有一个位地址,位地址范围为0x000x7f ,用C51编程在用到位变量时我们只是通过bit来定义,具体这个位变量存放在什么地址是由编译器决定的。就是说我们可以使用位变量,但可以不管它门的地址。位寻址区地址分配如表11.2示。 一般RAM区 0x300x7f是一般RAM区,也称为用户RAM区,共80字节,对于52子系列,一般RAM区从0x300xff单元。另外,对于前两区中未用的单元也可做为用户RAM单元使用。, 堆栈区与堆栈指针 堆栈是按先入后出、后入先出(FILO)的原则进行管理的一段存储区域。在MCS-51单片机中,堆栈占片内数据存储器的一段区域。在用C51编程时由编译器管理堆栈区与堆栈指针。 (2)特殊功能存储器 特殊功能存储器(SFR)也称专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O接口、串行口、定时/计数器、中断系统等功能模块的工作。用户在编程时可以给其设定值,但不能移作他用。SFR分布在0x800xff的地址空间,与片内数据存储器统一编址。除PC外,51子系列有18个特殊功能寄存器,其中3个为双字节,SFR共占用21个字节;52 子系列有21个特殊寄存器,其中5个是双字节,SFR共占用26 个字节。他们的分配情况如下: CPU专用寄存器:累加器A,寄存器B,程序状态寄存器PSW,堆栈指针SP,数据指针DPTR。,并行接口:P0P3 串行接口:串行控制寄存器SCON,串口数据缓冲器SBUF,电源控制寄存器PCON。 定时/计数器:方式寄存器TMOD,控制寄存器TCON,初值寄存器TH0、TL0;TH1、TL1。 中断系统:中断允许寄存器IE,中断优先寄存器IP。 特殊功能寄存器的名称、在C51中引用方法见表11.3。有一些特殊功能寄存器在C51中是看不到的,表中没列出。 在C51中,特殊功能寄存器在头文件“reg51.h”中定义,使用这些特殊功能寄存器,在程序中必须引用这个头文件。特殊功能寄存器除累加器A和寄存器B是通用寄存器,在程序中可以随便使用外,其它特殊功能寄存器都是专用的,不能移做它用。,在表11.3中,特殊功能寄存器P0、P1、P2、P3、A、B可以使用字节符号按字节引用,也可以按位引用,编译器规定按位引用格式是:字节符号位,如表中所示,例如引用P0的D0位,使用P00,但这样做在程序中容易和异或符号“”混淆,直接用“”引用,编译器会报错,所以要用位变量sbi
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号