单片机原理及应用第07章 单片机系统扩展.ppt

上传人:sccc 文档编号:6095965 上传时间:2023-09-23 格式:PPT 页数:90 大小:1.24MB
返回 下载 相关 举报
单片机原理及应用第07章 单片机系统扩展.ppt_第1页
第1页 / 共90页
单片机原理及应用第07章 单片机系统扩展.ppt_第2页
第2页 / 共90页
单片机原理及应用第07章 单片机系统扩展.ppt_第3页
第3页 / 共90页
单片机原理及应用第07章 单片机系统扩展.ppt_第4页
第4页 / 共90页
单片机原理及应用第07章 单片机系统扩展.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《单片机原理及应用第07章 单片机系统扩展.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用第07章 单片机系统扩展.ppt(90页珍藏版)》请在三一办公上搜索。

1、第7章 单片机系统扩展,章节安排:7.1 单片机最小系统介绍7.2 地址译码7.3 存储器扩展7.4 简单输入输出口扩展7.5 C51中对绝对地址的访问7.6 可编程I/O扩展(8255A)能力要求:了解单片机最小系统,7.1 MCS-51单片机的最小系统,最小系统:是指一个真正可用的单片机最小配置系统。对于单片机内部资源已能满足系统需要的,可直接采用最小系统。8051/8751的最小系统8031最小系统,该最小系统的特点如下:(1)由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O口使用。(2)片内数据存储器有128字节,地址空间00H7FH,没有片外数据存储器。(3)

2、内部有4KB程序存储器,地址空间0000H0FFFH,没有片外程序存储器,EA应接高电平。(4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。,8051/8751的最小系统 8051/8751片内有4K的ROM/EPROM,因此,只需要外接晶体振荡器和复位电路就可构成最小系统。如图所示。,7.1 MCS-51单片机的最小系统,8031最小应用系统,8031片内无程序存储器片,因此,在构成最小应用系统不仅要外接晶体振荡器和复位电路,还应外扩展程序存储器。,7.1 MCS-51单片机的最小系统,8031最小系统特点如下:(1)由于P0、P2在扩展程序存储器时作为地址线和

3、数据线,不能作为I/O线,因此,只有P1、P3作为用户I/O口使用。(2)片内数据存储器同样有128字节,地址空间00H7FH,没有片外数据存储器。(3)内部有无程序存储器,但片外扩展了程序存储器,其地址空间随芯片容量不同而不一样。图6.2中使用的是2764芯片,容量为8K字节,地址空间为0000H1FFFH。由于片内没有程序存储器,只能使用片外程序存储器,EA只能接低电平。(4)同样可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。,7.1 MCS-51单片机的最小系统,常用扩展器件地址锁存器:74LS373、74LS273存储器扩展:常用的程序存储器有:EPROM:

4、2716 2764常用的数据存储器有:静态RAM:6116 6264外部I/O口的扩展8255A,CPU是通过地址对不同的接口或芯片加以区分的。把CPU送出的地址转变为芯片选择的依据就是地址译码电路。地址译码有3种方法线选法部分译码法全译码法,地址译码概念,7.2 地址译码,地址译码电路一般有两种结构形式,固定式端口地址译码电路:硬件电路不改动,译码输出的地址或地址范围不变。门电路组合法:采用与门、与非门、反相器及或非门等简单逻辑门器件构成译码电路。译码器译码法可选式(开关式)端口地址译码:电路中有若干个开关,硬件电路不改动,只改变开关的状态,就可以使译码输出的地址或地址范围发生变化。(省略不

5、讲),7.2 地址译码,本章以存储器芯片2764(如右图)为例,介绍地址译码的原理芯片2764具有13根地址线,分别是引脚A0A12。引脚 为片选信号引脚,并且低电平有效。【片选信号说明】若想访问一个芯片,必须使该片选信号有效。换个角度:系统中会扩展很多的芯片,每个芯片都有片选信号,通过片选信号区分CPU是对自己访问,还是对其他芯片的访问。只有当片选引脚有效时,才是对该芯片的访问,而不是其他芯片。,51单片机一共有16根地址线,分别是A0A15,7.2 地址译码,地址译码方法线选法线选法:存储器芯片的地址线与单片机系统的地址线从低到高顺次相接后,剩余的高位地址线仅用一位参加译码。线选法使存储器

6、芯片的地址空间有重叠,造成系统存储器空间的浪费。,7.2 地址译码,按上图,2764的地址范围是A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X 0 X X 1 1 1 1 1 1 1 1 1 1 1 1 1 所以该连接方式决定了2764的地址范围如下,四部分重复。0 x00000 x1FFF 0 x20000 x3FFF0 x40000 x5FFF0 x60000 x7FFF,A15连接了CS引脚,只有A15=0时,才访问该芯片,A14、A13空闲,所以这两位

7、上的值为多少都没有关系,A12.0连接芯片地址引脚,决定了访问该芯片的单元地址,请计算一下连线时,2764的地址范围,7.2 地址译码,地址译码方法部分译码法(门电路组合法)部分译码:存储器芯片的地址线与单片机系统的地址线从低到高顺次相接后,剩余的高位地址线仅用一部分参加译码。部分译码使存储器芯片的地址空间有重叠,造成系统存储器空间的浪费。,7.2 地址译码,按上图,2764的地址范围是A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 X 0 0 1 1 1 1

8、 1 1 1 1 1 1 1 1 1 所以该连接方式决定了2764的地址范围如下,两部分重复。0 x00000 x1FFF 0 x80000 x9FFF,A15空闲,值随意,A14、A13通过与门连接CS引脚。因为CS为0时才可以访问芯片,所以,只有A14,A13=00时,与门输出才为0,才使CS有效,A12.0连接芯片地址引脚,决定了访问该芯片的单元地址,7.2 地址译码,请计算一下连线时,2764的地址范围,7.2 地址译码,地址译码方法全译码法(门电路组合法)全译码法:存储器芯片的地址线与单片机系统的地址线从低到高顺次相接后,剩余的所有高位地址线都参加译码。此方法无地址重叠。,7.2 地

9、址译码,按上图,2764的地址范围是A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 所以该连接方式决定了2764的地址范围如下:0 x00000 x1FFF,A15、A14、A13通过或门连接CS引脚。因为CS为0时才可以访问芯片,所以,只有A15,A14,A13=00时,或门输出才为0,才使CS有效,A12.0连接芯片地址引脚,决定了访问该芯片的单元地址,7.2 地址译码,系统中扩展了两片276

10、4,请计算它们各自的地址范围,7.2 地址译码,地址译码方式译码器译码法以三八译码器为例(见右图)74LS138译码器引脚介绍C,B,A:译码信号输入引脚G1:选通端(高电平有效),:选通端(低点评有效).:译码输出引脚(低电平有效)74LS138译码器功能:当三个选通端全部有效时,可将译码信号输入的二进制编码在一个对应的输出端以低电平译出,7.2 地址译码,74LS138三八译码器(真值表如下),7.2 地址译码,通过74LS138实现译码电路的连线 如下图。计算两片2764各自的地址范围,7.2 地址译码,MCS-51单片机存储器结构与一般微机的存储器结构不同,分为程序存储器ROM和数据存

11、储器RAM。程序存储器存放程序、固定常数和数据表格。数据存储器用作工作区及存放数据。,程序存储器MCS-51单片机的程序存储器,从物理结构上分为片内和片外程序存储器而对于片内程序存储器,在MCS-51系列中,不同的芯片各不相同:8031和8032内部没有ROM8051内部有4KBROM,8052内部有8KBROM 对于内部没有ROM的8031和8032,工作时只能扩展外部ROM,最多可扩展64K,地址范围为0000HFFFFH,7.3.1 存储器扩展存储器结构,对于内部有ROM的芯片,根据情况外部可以扩展ROM,但内部ROM和外部ROM共用64K存储空间,其中,片内程序存储器地址空间和片外程序

12、存储器的低地址空间重叠。51子系列重叠区域为0000H0FFFH,52子系列重叠区域为0000H1FFFH。,片 外ROMEA=0,片 外ROMEA=0,片 内ROMEA=1,片 外ROM,0000H,FFFFH,0000H,0FFFH,1000H,FFFFH,(a)8031片内无ROM,(b)8051片内有4K ROM,7.3.1 存储器扩展存储器结构,程序存储器结构,片 外ROMEA=0,片 内ROMEA=1,片 外ROM,0000H,1FFFH,2000H,FFFFH,(c)8052片内有8K ROM,7.3.1 存储器扩展存储器结构,程序存储器结构,程序存储器 的7个特殊地址,MCS-

13、51系列单片机复位后PC的内容为0000H,故单片机复位后将从0000H单元开始执行程序。程序存储器的0000H单元地址是系统程序的启动地址。这里用户一般放一条绝对转移指令。转到后而的用户程序。6个中断源的地址之间仅隔8个单元,存放中断服务程序往往不够用,这是通常放一条绝对转移指令,转到真正的中断服务程序,真正的中断服务程序放到后面。,7.3.1 存储器扩展存储器结构,数据存储器:从物理结构上分为片内数据存储器和片外数据存储器。,片内数据存储器MCS-51系列单片机的片内数据存储器除了RAM块外,还有特殊功能寄存器(SFR)块。对于51子系列RAM块有128字节,编址为00H7FH;SFR块也

14、占128字节,编址为80HFFH;二者连续不重叠。对于52子系列 RAM块有256字节,编址为00HFFH;SFR块也有128字节,编址为80HFFH;后者与前者的后128字节编址重叠的。访问时通过不同的指令相区分。片内数据存储器按功能分成以下几个部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。,7.3.1 存储器扩展存储器结构,7.3.1 存储器扩展存储器结构,8051单片机数据存储器结构,工作寄存器组区,00H1FH单元为工作寄存器组区,共32个字节。工作寄存器也称为通用寄存器,用于临时寄存8位信息。工作寄存器共有4组,称为0组、1组、2组和3组,每组8个

15、,分别依次用R0R7表示,7.3.1 存储器扩展存储器结构,8051单片机数据存储器结构工作寄存器区,2.位寻址区20H2FH为位寻址区,共16字节,128位。这128位每位都可以按位方式使用,每一位都有一个位地址,位地址范围为00H7FH,7.3.1 存储器扩展存储器结构,3.一般RAM区30H7FH是一般RAM区,也称为用户RAM区,共80字节,对于52子系列,一般RAM区从30HFFH单元。另外,对于前两区中未用的单元也可作为用户RAM单元使用。存储用户自己定义的一般变量,7.3.1存储器扩展存储器结构,4.堆栈区与堆栈指针堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。MCS-

16、51单片机中,堆栈是用片内数据存储器的一段区域,在具体使用时应避开工作寄存器、位寻址区,一般设在2FH以后的单元,如工作寄存器和位寻址区未用,也可开辟为堆栈。C51程序设计时,一般由编译器自行分配,7.3.1 存储器扩展存储器结构,5.特殊功能寄存器(SFR)专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作,用户在编程时可以给其设定值,但不能移作它用。SFR分布在80HFFH地址空间,与片内数据存储器统一编址,除PC外,51子系列有18个特殊功能寄存器,其中3个为双字节,共占用21个字节;52子系列有21个特殊寄存器,其中5个为双字节,共占用26

17、个字节。,7.3.1 存储器扩展存储器结构,7.3.2 存储器扩展概述,存储器扩展概述,MCS-51单片机的存储器扩展能力,MCS-51单片机地址总线宽度为16位,片外可扩展的存储器最大容量为64KB,地址为0000HFFFFH。因为程序存储器和数据存储器是通过 不同的 控制信号 和 指令 进行访问,允许两者的地址空间重叠,所以片外可扩展的程序存储器与数据存储器分别都为64KB。,存储器扩展概述,存储器扩展的一般方法简介 控制线 连线方式对于程序存储器:输出允许控制线 OE单片机的PSEN信号线相连。对于数据存储器:输出允许控制线OE单片机的读信号线RD。写控制线 WE单片机的写信号线WR。,

18、【说明】不论何种存储器芯片,其引脚都呈三总线结构,与单片机连接都是三总线对接。另外,电源线接电源线,地线接地线。,7.3.2 存储器扩展概述,存储器扩展的一般方法简介数据线 连线方式存储器芯片的数据线的数目由芯片的字长决定。连线时,存储器芯片的数据线与单片机的数据总线(P0.0 P0.7)按由低位到高位的顺序顺次相接。【强调】单片机使用三总线扩展系统时,单片机的数据总线为P0口的8位线,需要和存储器芯片的数据线依次相接,7.3.2 存储器扩展概述,存储器扩展的一般方法简介地址线 连线方式使用三总线系统扩展时,单片机的地址总线一共有16位(A0A15),分别是P0口(对应A0A7)和P2口(对应

19、A8A15)。存储器芯片的地址线的数目由芯片的容量决定。容量(Q)与地址线数目(N)满足关系式:Q=2N。存储器芯片的地址线与单片机的地址总线(A0A15)按由低位到高位的顺序顺次相接。一般来说,存储器芯片的地址线数目总是少于单片机地址总线的数目,因此连接后,单片机的高位地址线总有剩余。剩余地址线一般作为译码线,译码输出与存储器芯片的片选信号线CS相接。片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。,7.3.2 存储器扩展概述,解决方法分时复用技术:地址信号和数据信号在不同的时间段上传输。,危险,但是又如何实现分时复用技术呢?,答案是采用一片输出锁存器,通过前面ppt,

20、我们发现:单片机系统扩展时,P0口既作为数据线(D0D7)使用,也作为地址线的低8位使用(A0A7)。,因此,P0口既跑数据信号,也跑地址信号,存在着两种不同信号冲突的潜在危险,7.3.2 存储器扩展概述,74LS373:带输出三态门的8D锁存器74LS373引脚功能D7.0为8个输入端。Q7.0为8个输出端。LE:数据锁存控制端。当LE为“1”时,锁存器输出端同输入端变化;当LE为“0”时,数据输入被锁存,输出固定。OE 为输出允许端:当OE 为“0”时,三态门打开,可以驱动总线或负载;当OE 为“1”时,三态门关闭,输出呈高阻状态。,常用74LS373实现单片机数据总线和地址总线的分时复用

21、,7.3.2 存储器扩展概述,74LS373内部结构如右图74LS373真值表如下,7.3.2 存储器扩展概述,74LS373用作地址锁存器 连线,7.3.2 存储器扩展概述,ALE(30脚):地址锁存信号输出端当外接存储器(ROM或RAM)时,ALE的输出用于锁存地址的低8位,一般ALE接锁存器的LE端,电路板连线,连接P0口,扩展数据线和低位地址线,连接P2口,扩展低位地址线,数据总线,连接芯片的数据线,低8位地址总线,连接芯片的地址线,扩展存储器所需芯片数目的确定,若所选存储器芯片字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式确定:,若所选存储器芯片字长与单片机字长不一致,则不

22、仅需扩展容量,还需字扩展。所需芯片数目按下式确定:,7.3.2 存储器扩展概述,单片机外扩程序存储器相关引脚(以8051为例)/EA:片外程序存储器选用端。若/EA=0,则访问片外程序存储器;若/EA=1,则在00000FFFFH的地址范围内访问片内程序存储器,一旦超出范围,自动访问片外程序存储器/PSEN:片外程序存储器读选通信号输出端,低电平有效。在对外部程序存储器进行读操作时,每个周期出现两次信号,连线时与外部ROM的OE引脚相连ALE:当外接存储器(ROM或RAM)时,ALE的输出用于锁存地址的低8位,一般ALE接锁存器的控制端LEP0.0P0.7:数据线,同时也是低8位地址线P2.0

23、P2.7:高8位地址线指令集访问外部ROM不需要使用显示指令,是通过PC(指令计数器)来控制取指地址的(跳转指令也可能引起PC跳转),7.3.3 存储器扩展程序存储器扩展,引脚介绍A0A12:地址线D0D7:数据线/PGM:控制本芯片是处于正常工作状态还是处于编程/检验状态。若PGM=1,则是处于正常工作状态vpp:加入编程时所需要的额定电压(高于工作电压)/OE:允许输出引脚/CE:片选引脚,程序存储器以2764(EPROM)为例,7.3.3 存储器扩展程序存储器扩展,8051外扩程序存储器,7.3.3 存储器扩展程序存储器扩展,8051外扩程序存储器按上图2764的地址范围是A15 A14

24、 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X 0 X X 1 1 1 1 1 1 1 1 1 1 1 1 1 所以该连接方式决定了2764的地址范围如下,四部分重复。0 x00000 x1FFF 0 x20000 x3FFF0 x40000 x5FFF0 x60000 x7FFF,7.3.3 存储器扩展程序存储器扩展,7.3.3 存储器扩展程序存储器扩展,多片程序存储器的扩展,其8个重叠的地址范围为如下:00000000000000000001111111111111,即

25、0000H1FFFH;00100000000000000011111111111111,即2000H3FFFH;01000000000000000101111111111111,即4000H5FFFH;01100000000000000111111111111111,即6000H7FFFH;10000000000000001001111111111111,即8000H9FFFH;10100000000000001011111111111111,即A000HBFFFH;11000000000000001101111111111111,即C000HDFFFH;1110000000000000111

26、1111111111111,即E000HFFFFH。4,7.3.3 存储器扩展程序存储器扩展,上图是通过线选法实现的两片2764扩展成16KB程序存储器两片2764的地址线A0A12与地址总线的A0A12对应相连2764的数据线D0D7与数据总线A0A7对应相连两片2764的输出允许控制线连在一起与8031的PSEN相连第一片2764的片选线CS与8031地址总线的P2.7直接相连第二片2764的片选线CS与8031地址总线的P2.7取反后相连。其两片的地址空间分别为:第一片:000000000000000000001111111111111,即0000H1FFFH;0010000000000

27、00000011111111111111,即2000H3FFFH;010000000000000000101111111111111,即4000H5FFFH;011000000000000000111111111111111,即6000H7FFFH;第二片:100000000000000001001111111111111,即8000H9FFFH;101000000000000001011111111111111,即A000HBFFFH;110000000000000001101111111111111,即C000HDFFFH;111000000000000001111111111111111

28、,即E000HFFFFH。,7.3.3 存储器扩展程序存储器扩展,上图为采用全译码法实现的4片2764扩展成32KB程序存储器。8031剩余的高3位地址总线P2.7、P2.6、P2.5通过74LS138译码器形成4个2764的片选信号,7.3.3 存储器扩展程序存储器扩展,由于采用全译码,每片2764的地址空间都是唯一的。它们分别是:000000000000000000001111111111111,即0000H1FFFH;001000000000000000011111111111111,即2000H3FFFH;010000000000000000101111111111111,即4000H

29、5FFFH;011000000000000000111111111111111,即6000H7FFFH。,7.3.3 存储器扩展程序存储器扩展,对于数据存储器:输出允许控制线OE单片机的读信号线RD。写控制线 WE单片机的写信号线WR。其它信号线的连接与程序存储器完全相同。,7.3.4 存储器扩展数据存储器扩展,单片机外扩数据存储器(RAM)相关引脚(以8051为例)/WR:写片外数据存储器信号,低电平有效/RD:读片外数据存储器信号,低电平有效ALE:允许地址所存信号,用于所存片外地址的低8位P0.0P0.7:数据线,同时也是低8位地址线P2.0P2.7:高8位地址线指令集而访问外部RAM则

30、需要在程序设计上使用指令MOVX来执行。另外,访问内部RAM则使用了指令MOV,以区分外部RAM的访问,7.3.4 存储器扩展数据存储器扩展,例:8051外扩数据存储器,7.3.4 存储器扩展数据存储器扩展,8051外扩数据存储器按上图2864的地址范围是A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 X 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 X X 0 X 1 1 1 1 1 1 1 1 1 1 1 1 1 所以该连接方式决定了2864的地址范围如下,四部分重复。0 x00000 x1FFF 0 x20

31、000 x3FFF0 x80000 x9FFF0 xA0000 xBFFF?如何解决地址重复问题,7.3.4 存储器扩展数据存储器扩展,下图是两片数据存储器芯片6264与8051单片机的连接。6264是8K8的静态数据存储器芯片有13根地址线数据线8根一根输出允许信号OE和一根写控制信号WE 两根片选信号CE1和CE2(都是低电平有效),7.3.4 存储器扩展数据存储器扩展,P2.7为低电平0,两片6264芯片的地址空间为:第一片:010000000000000000101111111111111,即4000H5FFFH;第二片:00100000000000000001111111111111

32、1,即2000H3FFFH;P2.7为高电平1,两片6264芯片的地址空间为:第一片:110000000000000001101111111111111,即C000HDFFFH;第二片:101000000000000001011111111111111,即A000HBFFFH;,7.3.4 存储器扩展数据存储器扩展,见电路板原理图,确定数据存储器6264的地址范围,7.3.4 存储器扩展数据存储器扩展,7.4 简单输入/输出口扩展,通常通过数据缓冲器、锁存器来扩展简单I/O接口。74LS373、74LS244、74LS273、74LS245等芯片都可以作简单I/O扩展。实际上,只要具有输入三态

33、、输出锁存的电路,就可以用作I/O口扩展。,下图是利用74LS373和74LS244扩展的简单I/O口其中74LS373扩展并行输出口,前面已经讲过74LS244扩展并行输入口74LS244是单向数据缓冲器,带两个控制端1G和2G,当它们为低电平时,输入端D0D7的数据输出到Q0Q7。,74LS244见右图引脚介绍/1G,/2G:选通控制(低电平有效)1Y12Y4:数据输入端1A12A4:数据输出端,7.4 简单输入/输出口扩展,7.4 简单输入/输出口扩展,74LS373:带输出三态门的8D锁存器74LS373引脚功能D7.0为8个输入端。Q7.0为8个输出端。LE:数据锁存控制端。当LE为

34、“1”时,锁存器输出端同输入端变化;当LE为“0”时,数据输入被锁存,输出固定。OE 为输出允许端:当OE 为“0”时,三态门打开,可以驱动总线或负载;当OE 为“1”时,三态门关闭,输出呈高阻状态。,教材例题连线,7.4 简单输入/输出口扩展,电路板 连线设计,7.4 简单输入/输出口扩展,为什么要使用绝对地址在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。单片机系统扩展的电路连线确定后,存储器芯片或者I/O端口已经被分配了固定的地址空间,只有地址对应,才可访问所需要的地址单元C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL

35、51连接定位后才能确定。为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用扩展关键字“at”、指针、预定义以及连接定位控制命令。一使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下:,7.5 C51中对绝对地址的访问,对绝对地址的访问一共有3钟形式使用C51运行库中预定义宏通过指针访问通过指针访问一使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。规

36、定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下:,7.5 C51中对绝对地址的访问,绝对地址访问方式一:使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下:#define CBYTE(unsigned char volatile*)0 x50000L)#define DBYTE(unsigned char volatile*)0 x40000L)#define PBYTE(unsigned char volatile*)0 x30000L

37、)#define XBYTE(unsigned char volatile*)0 x20000L)#define CWORD(unsigned int volatile*)0 x50000L)#define DWORD(unsigned int volatile*)0 x40000L)#define PWORD(unsigned int volatile*)0 x30000L)#define XWORD(unsigned int volatile*)0 x20000L)这些函数原型放在absacc.h文件中。使用时须用预处理命令把该头文件包含到文件中,形式为:#include。,7.5 C51

38、中对绝对地址的访问,访问形式:宏名地址宏名为CBYTE、DBYTE、PBYTE、XBYTE、CWORD、DWORD、PWORD或XWORD。地址为存储单元的绝对地址,一般用十六进制形式表示。,7.5 C51中对绝对地址的访问,存储器类型存储器类型是用于指明变量所处的单片机的存储器区域情况。存储器类型与存储种类完全不同。C51编译器能识别的存储器类型有以下几种,见表所示。,定义变量时也可以省“存储器类型”,省时C51编译器将按编译模式默认存储器类型,具体编译模式的情况在后面介绍。,7.5 C51中对绝对地址的访问,绝对地址对存储单元的访问#include/*将绝对地址头文件包含在文件中*/#in

39、clude/*将寄存器头文件包含在文件中*/void main(void)unsigned char var1;unsigned int var2;var1=XBYTE0 x0005;/*XBYTE0 x0005访问片外RAM的0005字节单元*/var2=XWORD0 x0002;/*XWORD0 x0002访问片外RAM的000字单元*/.while(1);在上面程序中,其中XBYTE0 x0005就是以绝对地址方式访问的片外RAM 0005字节单元;XWORD0 x0002就是以绝对地址方式访问的片外RAM 0002字单元。,7.5 C51中对绝对地址的访问,绝对地址对存储单元的访问#i

40、nclude/*将绝对地址头文件包含在文件中*/#include/*将寄存器头文件包含在文件中*/#define ADDR1 XBYTE0 x0005/声明宏#define ADDR2 XWORDXWRODvoid main(void)unsigned char var1;unsigned int var2;var1=ADDR1;var2=ADDR2;.while(1);,7.5 C51中对绝对地址的访问,绝对地址访问方式二:通过指针访问采用指针的方法,可以实现在C51程序中对任意指定的存储器单元进行访问。【例】通过指针实现绝对地址的访问。void func(void)unsigned cha

41、r data var1;unsigned char pdata*dp1;/*定义一个指向pdata区的指针dp1*/unsigned char xdata*dp2;/*定义一个指向xdata区的指针dp2*/unsigned char data*dp3;/*定义一个指向data区的指针dp3*/dp1=0 x30;/*dp1指针赋值,指向pdata区的30H单元*/dp2=0 x1000;/*dp2指针赋值,指向xdata区的1000H单元*/*dp1=0 xff;/*将数据0 xff送到片外RAM30H单元*/*dp2=0 x12;/*将数据0 x12送到片外RAM1000H单元*/dp3=

42、/*给变量var1赋值0 x20*/,7.5 C51中对绝对地址的访问,绝对地址访问方式三:使用C51扩展关键字_at_ 使用_at_对指定的存储器空间的绝对地址进行访问,格式如下:存储器类型 数据类型说明符 变量名 _at_ 地址常数;其中:存储器类型为data、bdata、idata、pdata等C51能识别的数据类型,如省略则按存储模式规定的默认存储器类型确定变量的存储器区域;数据类型为C51支持的数据类型。地址常数用于指定变量的绝对地址,必须位于有效的存储器空间之内;强调:使用_at_定义的变量必须为全局变量。,7.5 C51中对绝对地址的访问,绝对地址访问方式三:使用C51扩展关键字

43、_at_【例】通过_at_实现绝对地址的访问。void main(void)data unsigned char x1 _at_ 0 x40;/*在data区中定义字节变量x1,它的地址为40H*/xdata unsigned char x2 _at_ 0 x2000;/*在xdata区中定义字变量x2,它的地址为2000H*/x1=0 xff;x2=0 x12;.while(1);,7.5 C51中对绝对地址的访问,【项目实践】通过端口扩展方式实现:(1)流水灯(2)开关数据控制发光二极管硬件连线P0口JP24;JP26发光二极管;JP25拨码开关;使用短路帽短路J9提示:注意确定74LS3

44、73和74LS244的地址,7.6 可编程I/O扩展(8255A),8255A是在单片机应用系统中广泛采用的I/O接口扩展芯片。8255A是Intel公司生产的8位可编程并行接口芯片有3个可编程的并行I/O端口:PA口、PB口和PC口,7.6 可编程I/O扩展(8255A),8255A的结构,8255A的内部结构 3个8位的并行I/O端口:A口、B口、C口(又分为上、下半部);端口A对应1个8位数据输入锁存器,1个8位输出锁存器/缓冲器。端口B对应1个8位数据输入缓冲器,1个8位输出锁存器/缓冲器。端口C对应1个8位数据输入缓冲器,1个8位输出锁存器/缓冲器。A口和C口的上半部合称为A组;B口

45、和C口的下半部合称为B组。可通过指令单独设置A、B、C口为输入口或为输出口数据总线缓冲器:双向、三态、8位,连接在CPU和8255之间的接口模块;完成向内部写入控制命令字;向A口、B口、C口发送或接收数据。读写控制模块:接受CPU的读写命令、地址信号。,7.6 可编程I/O扩展(8255A),和外设一边相连的信号PA7PA0A组数据信号;PB7PB0B组数据信号;PC7PC0C组数据信号。和CPU一边相连的信号(见图6.32)RESET复位信号,高电平有效。D7D0 数据线、双向。片选信号,低电平有效。读出信号。低电平时从选中的端口读出数据,经系统数据总线送入CPU;写入信号。低电平时,向选中

46、的端口写入数据;A1、A0端口选择信号,接系统地址线。,8255A的外部引脚,7.6 可编程I/O扩展(8255A),8255与系统的连接示意图,3.8255A的端口地址与读写操作,8255A的读写操作,8255A 控制,1.方式选择控制字,8255A有两种控制字:方式选择;C口置1/0;,注意:有三种基本工作方式:方式0基本的输入输出方式;方式1选通的输入输出方式;方式2双向传输方式;只有端口A能工作在方式2;同一组的两端口可分别工作在输入和输出方式。,D7=1,2.端口C按位置1/置0控制字,D7=0,提示:置1/置0控制字必须写入控制口;D7位必须为0;D0位决定置1或置0;D3、D2、

47、D1位决定了对哪一位操作。,3.8255A初始化编程应用举例:,设系统有2片8255A芯片J1和J2。端口地址分别为:J1:端口A地址00E0H端口B地址00E1H端口C地址00E2H控制口地址00E3H要求:J1各口工作在下列方式:端口A 方式0,输出;端口C的高4位 输出端口B 方式0,输入;端口C的低4位输入所以,方式选择控制字为:1000 0011=83H要求:J2各口工作在下列方式:端口A 方式0,输入;端口C的高4位输出端口B 方式1,输出;端口C的低4位配合B口所以,方式选择控制字为:1001 0100=94H,J2:端口A地址00E8H端口B地址00E9H端口C地址00EAH控

48、制口地址00EBH,8255A有三种工作方式:方式0:基本型输入输出方式(无条件传送方式);方式1:选通型输入输出方式;方式2:双向数据传送方式。A口:上述三种方式都可以;B口:只能工作在方式0和方式1;C口:只能工作在方式0。当A口工作在方式1或方式2,B工作在方式1时,C口的一部分可以作为端口与外设之间的联络线。,8255的工作方式0基本型输入输出方式方式0的工作特点(1)端口与外设之间没有联络线,端口没有中断功能,不提供状态信息(2)各端口独立,即可作为输入口,也可作为输出口,相互之间无任何关系;(3)CPU与端口之间采用无条件传送方式输入输出数据:外设随时准备就绪,CPU想输入数据就可以输入;想输出数据就可以输出。,【项目实践】通过8255扩展方式实现:(1)流水灯(2)按键数据在七段数码管上显示硬件连线CPU的:P0口JP20;P2口JP21(扭接);8255的:PA口JP18;PB口JP19;PC口JP17使用短路帽短路J9提示重点确定8255的端口输入/输出方向,及8255的端口地址,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号