首页 第07章 单片机系统扩展

第07章 单片机系统扩展

举报
开通vip

第07章 单片机系统扩展null第7章 单片机系统扩展第7章 单片机系统扩展章节安排: 7.1 单片机最小系统介绍 7.2 地址译码 7.3 存储器扩展 7.4 简单输入输出口扩展 7.5 C51中对绝对地址的访问 7.6 可编程I/O扩展(8255A) 能力要求: 了解单片机最小系统 null7.1 MCS-51单片机的最小系统最小系统:是指一个真正可用的单片机最小配置系统。对于单片机内部资源已能满足系统需要的,可直接采用最小系统。 8051/8751的最小系统 8031最小系统 null该最小系统的特点如...

第07章 单片机系统扩展
null第7章 单片机系统扩展第7章 单片机系统扩展章节安排: 7.1 单片机最小系统介绍 7.2 地址译码 7.3 存储器扩展 7.4 简单输入输出口扩展 7.5 C51中对绝对地址的访问 7.6 可编程I/O扩展(8255A) 能力要求: 了解单片机最小系统 null7.1 MCS-51单片机的最小系统最小系统:是指一个真正可用的单片机最小配置系统。对于单片机内部资源已能满足系统需要的,可直接采用最小系统。 8051/8751的最小系统 8031最小系统 null该最小系统的特点如下: (1)由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O口使用。 (2)片内数据存储器有128字节,地址空间00H~7FH,没有片外数据存储器。 (3)内部有4KB程序存储器,地址空间0000H~0FFFH,没有片外程序存储器,EA应接高电平。 (4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。8051/8751的最小系统 8051/8751片内有4K的ROM /EPROM,因此,只需要外接晶体振荡器和复位电路就可构成最小系统。如图所示。 7.1 MCS-51单片机的最小系统null8031最小应用系统 8031片内无程序存储器片,因此,在构成最小应用系统不仅要外接晶体振荡器和复位电路,还应外扩展程序存储器。 7.1 MCS-51单片机的最小系统null8031最小系统特点如下: (1)由于P0、P2在扩展程序存储器时作为地址线和数据线,不能作为I/O线,因此,只有P1、P3作为用户I/O口使用。 (2)片内数据存储器同样有128字节,地址空间00H~7FH,没有片外数据存储器。 (3)内部有无程序存储器,但片外扩展了程序存储器,其地址空间随芯片容量不同而不一样。图6.2中使用的是2764芯片,容量为8K字节,地址空间为0000H~1FFFH。由于片内没有程序存储器,只能使用片外程序存储器,EA只能接低电平。 (4)同样可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。 7.1 MCS-51单片机的最小系统null常用扩展器件 地址锁存器: 74LS373、74LS273 存储器扩展: 常用的程序存储器有: EPROM: 2716 2764 常用的数据存储器有: 静态RAM:6116 6264 外部I/O口的扩展 8255AnullCPU是通过地址对不同的接口或芯片加以区分的。把CPU送出的地址转变为芯片选择的依据就是地址译码电路。 地址译码有3种方法 线选法 部分译码法 全译码法 地址译码概念7.2 地址译码null固定式端口地址译码电路:硬件电路不改动,译码输出的地址或地址范围不变。 门电路组合法:采用与门、与非门、反相器及或非门等简单逻辑门器件构成译码电路。 译码器译码法 可选式(开关式)端口地址译码:电路中有若干个DIP开关,硬件电路不改动,只改变开关的状态,就可以使译码输出的地址或地址范围发生变化。(省略不讲)地址译码电路一般有两种结构形式7.2 地址译码null本章以存储器芯片2764(如右图)为例,介绍地址译码的原理 芯片2764具有13根地址线,分别是引脚A0~A12。 引脚 为片选信号引脚,并且低电平有效。 【片选信号说明】若想访问一个芯片,必须使该片选信号有效。换个角度:系统中会扩展很多的芯片,每个芯片都有片选信号,通过片选信号区分CPU是对自己访问,还是对其他芯片的访问。只有当片选引脚有效时,才是对该芯片的访问,而不是其他芯片。 51单片机一共有16根地址线,分别是A0~A157.2 地址译码null地址译码方法——线选法 线选法:存储器芯片的地址线与单片机系统的地址线从低到高顺次相接后,剩余的高位地址线仅用一位参加译码。线选法使存储器芯片的地址空间有重叠,造成系统存储器空间的浪费。7.2 地址译码null按上图,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的地址范围如下,四部分重复。 0x0000~0x1FFF 0x2000~0x3FFF 0x4000~0x5FFF 0x6000~0x7FFFA15连接了CS引脚,只有A15=0时,才访问该芯片A14、A13空闲,所以这两位上的值为多少都没有关系A[12..0]连接芯片地址引脚,决定了访问该芯片的单元地址null请计算一下连线时,2764的地址范围7.2 地址译码null 地址译码方法——部分译码法(门电路组合法) 部分译码:存储器芯片的地址线与单片机系统的地址线从低到高顺次相接后,剩余的高位地址线仅用一部分参加译码。部分译码使存储器芯片的地址空间有重叠,造成系统存储器空间的浪费。7.2 地址译码null按上图,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 1 1 1 1 1 1 1 1 1 所以该连接方式决定了2764的地址范围如下,两部分重复。 0x0000~0x1FFF 0x8000~0x9FFF A15空闲,值随意A14、A13通过与门连接CS引脚。因为CS为0时才可以访问芯片,所以,只有A14,A13=00时,与门输出才为0,才使CS有效A[12..0]连接芯片地址引脚,决定了访问该芯片的单元地址7.2 地址译码null请计算一下连线时,2764的地址范围7.2 地址译码null地址译码方法——全译码法(门电路组合法) 全译码法:存储器芯片的地址线与单片机系统的地址线从低到高顺次相接后,剩余的所有高位地址线都参加译码。 此方法无地址重叠。7.2 地址译码null按上图,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的地址范围如下: 0x0000~0x1FFF A15、A14、A13通过或门连接CS引脚。因为CS为0时才可以访问芯片,所以,只有A15,A14,A13=00时,或门输出才为0,才使CS有效A[12..0]连接芯片地址引脚,决定了访问该芯片的单元地址7.2 地址译码null系统中扩展了两片2764,请计算它们各自的地址范围7.2 地址译码null地址译码方式——译码器译码法 以三八译码器为例(见右图) 74LS138译码器引脚介绍 C,B,A:译码信号输入引脚 G1:选通端(高电平有效) , :选通端(低点评有效) .. :译码输出引脚(低电平有效) 74LS138译码器功能:当三个选通端全部有效时,可将译码信号输入的二进制编码在一个对应的输出端以低电平译出 7.2 地址译码null74LS138三八译码器(真值 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 如下)7.2 地址译码null通过74LS138实现译码电路的连线 如下图。计算两片2764各自的地址范围7.2 地址译码null MCS-51单片机存储器结构与一般微机的存储器结构不同,分为程序存储器ROM和数据存储器RAM。程序存储器存放程序、固定常数和数据表格。数据存储器用作工作区及存放数据。 程序存储器 MCS-51单片机的程序存储器,从物理结构上分为片内和片外程序存储器 而对于片内程序存储器,在MCS-51系列中,不同的芯片各不相同: 8031和8032内部没有ROM 8051内部有4KBROM, 8052内部有8KBROM 对于内部没有ROM的8031和8032,工作时只能扩展外部ROM,最多可扩展64K,地址范围为0000H—FFFFH 7.3.1 存储器扩展——存储器结构null 对于内部有ROM的芯片,根据情况外部可以扩展ROM,但内部ROM和外部ROM共用64K存储空间,其中,片内程序存储器地址空间和片外程序存储器的低地址空间重叠。51子系列重叠区域为0000H—0FFFH,52子系列重叠区域为0000H—1FFFH。片 外 ROM EA=0片 外 ROM EA=0片 内 ROM EA=1 片 外 ROM 0000HFFFFH0000H0FFFH1000HFFFFH(a)8031片内无ROM(b)8051片内有4K ROM7.3.1 存储器扩展——存储器结构程序存储器结构null片 外 ROM EA=0片 内 ROM EA=1 片 外 ROM 0000H1FFFH2000HFFFFH(c)8052片内有8K ROM7.3.1 存储器扩展——存储器结构程序存储器结构null程序存储器 的7个特殊地址 MCS-51系列单片机复位后PC的内容为0000H,故单片机复位后将从0000H单元开始执行程序。程序存储器的0000H单元地址是系统程序的启动地址。这里用户一般放一条绝对转移指令。转到后而的用户程序。 6个中断源的地址之间仅隔8个单元,存放中断服务程序往往不够用,这是通常放一条绝对转移指令,转到真正的中断服务程序,真正的中断服务程序放到后面。 7.3.1 存储器扩展——存储器结构null数据存储器:从物理结构上分为片内数据存储器和片外数据存储器。 片内数据存储器 MCS-51系列单片机的片内数据存储器除了RAM块外,还有特殊功能寄存器(SFR)块。 对于51子系列 RAM块有128字节,编址为00H—7FH; SFR块也占128字节,编址为80H—FFH; 二者连续不重叠。 对于52子系列 RAM块有256字节,编址为00H—FFH; SFR块也有128字节,编址为80H—FFH; 后者与前者的后128字节编址重叠的。访问时通过不同的指令相区分。 片内数据存储器按功能分成以下几个部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。 7.3.1 存储器扩展——存储器结构null7.3.1 存储器扩展——存储器结构8051单片机数据存储器结构null 工作寄存器组区 00H—1FH单元为工作寄存器组区,共32个字节。工作寄存器也称为通用寄存器,用于临时寄存8位信息。工作寄存器共有4组,称为0组、1组、2组和3组,每组8个,分别依次用R0~R7表示 7.3.1 存储器扩展——存储器结构8051单片机数据存储器结构 ——工作寄存器区null 2.位寻址区 20H—2FH为位寻址区,共16字节,128位。这128位每位都可以按位方式使用,每一位都有一个位地址,位地址范围为00H—7FH 7.3.1 存储器扩展——存储器结构null3.一般RAM区 30H—7FH是一般RAM区,也称为用户RAM区,共80字节,对于52子系列,一般RAM区从30H—FFH单元。另外,对于前两区中未用的单元也可作为用户RAM单元使用。 存储用户自己定义的一般变量 7.3.1存储器扩展——存储器结构null4. 堆栈区与堆栈指针 堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。MCS-51单片机中,堆栈是用片内数据存储器的一段区域,在具体使用时应避开工作寄存器、位寻址区,一般设在2FH以后的单元,如工作寄存器和位寻址区未用,也可开辟为堆栈。 C51程序设计时,一般由编译器自行分配 7.3.1 存储器扩展——存储器结构null5. 特殊功能寄存器(SFR) 专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作,用户在编程时可以给其设定值,但不能移作它用。 SFR分布在80H—FFH地址空间,与片内数据存储器统一编址,除PC外,51子系列有18个特殊功能寄存器,其中3个为双字节,共占用21个字节;52子系列有21个特殊寄存器,其中5个为双字节,共占用26个字节。7.3.1 存储器扩展——存储器结构null7.3.2 存储器扩展概述存储器扩展概述MCS-51单片机的存储器扩展能力MCS-51单片机地址总线宽度为16位,片外可扩展的存储器最大容量为64KB,地址为0000H~FFFFH。 因为程序存储器和数据存储器是通过 不同的 控制信号 和 指令 进行访问,允许两者的地址空间重叠,所以片外可扩展的程序存储器与数据存储器分别都为64KB。 null存储器扩展概述存储器扩展的一般方法简介 控制线 连线方式 对于程序存储器:输出允许控制线 OE——单片机的PSEN信号线相连 。 对于数据存储器: 输出允许控制线OE——单片机的读信号线RD。 写控制线 WE——单片机的写信号线WR。 【说明】不论何种存储器芯片,其引脚都呈三总线结构,与单片机连接都是三总线对接。另外,电源线接电源线,地线接地线。 7.3.2 存储器扩展概述null存储器扩展的一般方法简介 数据线 连线方式 存储器芯片的数据线的数目由芯片的字长决定。 连线时,存储器芯片的数据线与单片机的数据总线(P0.0 ~ P0.7)按由低位到高位的顺序顺次相接。 【强调】单片机使用三总线扩展系统时,单片机的数据总线为P0口的8位线,需要和存储器芯片的数据线依次相接7.3.2 存储器扩展概述null存储器扩展的一般方法简介 地址线 连线方式 使用三总线系统扩展时,单片机的地址总线一共有16位(A0~A15),分别是P0口(对应A0~A7)和P2口(对应A8~A15)。 存储器芯片的地址线的数目由芯片的容量决定。容量(Q)与地址线数目(N)满足关系式:Q=2N。 存储器芯片的地址线与单片机的地址总线(A0~A15)按由低位到高位的顺序顺次相接。 一般来说,存储器芯片的地址线数目总是少于单片机地址总线的数目,因此连接后,单片机的高位地址线总有剩余。 剩余地址线一般作为译码线,译码输出与存储器芯片的片选信号线CS相接。片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。 7.3.2 存储器扩展概述null解决方法——分时复用技术:地址信号和数据信号在不同的时间段上传输。危险但是又如何实现分时复用技术呢? 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 是采用一片输出锁存器通过前面 ppt 关于艾滋病ppt课件精益管理ppt下载地图下载ppt可编辑假如ppt教学课件下载triz基础知识ppt ,我们发现:单片机系统扩展时,P0口既作为数据线(D0~D7)使用,也作为地址线的低8位使用(A0~A7)。因此,P0口既跑数据信号,也跑地址信号,存在着两种不同信号冲突的潜在危险7.3.2 存储器扩展概述null74LS373: 带输出三态门的8D锁存器 74LS373引脚功能 D[7..0]为8个输入端。 Q[7..0]为8个输出端。 LE:数据锁存控制端。 当LE为“1”时,锁存器输出端同输入端变化; 当LE为“0”时, 数据输入被锁存,输出固定。 OE 为输出允许端: 当OE 为“0”时, 三态门打开,可以驱动总线或负载; 当OE 为“1”时, 三态门关闭, 输出呈高阻状态。常用74LS373实现单片机数据总线和地址总线的分时复用7.3.2 存储器扩展概述null74LS373内部结构如右图 74LS373真值表如下 7.3.2 存储器扩展概述null74LS373用作地址锁存器 连线7.3.2 存储器扩展概述ALE(30脚):地址锁存信号输出端 当外接存储器(ROM或RAM)时,ALE的输出用于锁存地址的低8位,一般ALE接锁存器的LE端null电路板连线连接P0口,扩展数据线和低位地址线连接P2口,扩展低位地址线数据总线,连接芯片的数据线低8位地址总线,连接芯片的地址线null扩展存储器所需芯片数目的确定若所选存储器芯片字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式确定:若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。所需芯片数目按下式确定:7.3.2 存储器扩展概述null单片机外扩程序存储器 相关引脚(以8051为例) /EA:片外程序存储器选用端。若/EA=0,则访问片外程序存储器;若/EA=1,则在0000~0FFFFH的地址范围内访问片内程序存储器,一旦超出范围,自动访问片外程序存储器 /PSEN:片外程序存储器读选通信号输出端,低电平有效。在对外部程序存储器进行读操作时,每个周期出现两次信号,连线时与外部ROM的OE引脚相连 ALE:当外接存储器(ROM或RAM)时,ALE的输出用于锁存地址的低8位,一般ALE接锁存器的控制端LE P0.0~P0.7: 数据线,同时也是低8位地址线 P2.0~P2.7:高8位地址线 指令集 访问外部ROM不需要使用显示指令,是通过PC(指令计数器)来控制取指地址的(跳转指令也可能引起PC跳转)7.3.3 存储器扩展——程序存储器扩展null引脚介绍 A0~A12:地址线 D0~D7: 数据线 /PGM:控制本芯片是处于正常工作状态还是处于编程/检验状态。若PGM=1,则是处于正常工作状态 vpp: 加入编程时所需要的额定电压(高于工作电压) /OE:允许输出引脚 /CE: 片选引脚程序存储器以2764(EPROM)为例7.3.3 存储器扩展——程序存储器扩展null8051外扩程序存储器7.3.3 存储器扩展——程序存储器扩展null8051外扩程序存储器 按上图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的地址范围如下,四部分重复。 0x0000~0x1FFF 0x2000~0x3FFF 0x4000~0x5FFF 0x6000~0x7FFF7.3.3 存储器扩展——程序存储器扩展null7.3.3 存储器扩展——程序存储器扩展null多片程序存储器的扩展其8个重叠的地址范围为如下: 0000000000000000~0001111111111111,即0000H~1FFFH; 0010000000000000~0011111111111111,即2000H~3FFFH; 0100000000000000~0101111111111111,即4000H~5FFFH; 0110000000000000~0111111111111111,即6000H~7FFFH; 1000000000000000~1001111111111111,即8000H~9FFFH; 1010000000000000~1011111111111111,即A000H~BFFFH; 1100000000000000~1101111111111111,即C000H~DFFFH; 1110000000000000~1111111111111111,即E000H~FFFFH。47.3.3 存储器扩展——程序存储器扩展null上图是通过线选法实现的两片2764扩展成16KB程序存储器 两片2764的地址线A0~A12与地址总线的A0~A12对应相连 2764的数据线D0~D7与数据总线A0~A7对应相连 两片2764的输出允许控制线连在一起与8031的PSEN相连 第一片2764的片选线CS与8031地址总线的P2.7直接相连 第二片2764的片选线CS与8031地址总线的P2.7取反后相连。 其两片的地址空间分别为: 第一片: 00000000000000000~0001111111111111,即0000H~1FFFH; 00100000000000000~0011111111111111,即2000H~3FFFH; 01000000000000000~0101111111111111,即4000H~5FFFH; 01100000000000000~0111111111111111,即6000H~7FFFH; 第二片: 10000000000000000~1001111111111111,即8000H~9FFFH; 10100000000000000~1011111111111111,即A000H~BFFFH; 11000000000000000~1101111111111111,即C000H~DFFFH; 11100000000000000~1111111111111111,即E000H~FFFFH。7.3.3 存储器扩展——程序存储器扩展null上图为采用全译码法实现的4片2764扩展成32KB程序存储器。8031剩余的高3位地址总线P2.7、P2.6、P2.5通过74LS138译码器形成4个2764的片选信号 7.3.3 存储器扩展——程序存储器扩展null由于采用全译码,每片2764的地址空间都是唯一的。它们分别是: 00000000000000000~0001111111111111,即0000H~1FFFH; 00100000000000000~0011111111111111,即2000H~3FFFH; 01000000000000000~0101111111111111,即4000H~5FFFH; 01100000000000000~0111111111111111,即6000H~7FFFH。7.3.3 存储器扩展——程序存储器扩展null对于数据存储器: 输出允许控制线OE——单片机的读信号线RD。 写控制线 WE——单片机的写信号线WR。 其它信号线的连接与程序存储器完全相同。 7.3.4 存储器扩展——数据存储器扩展null单片机外扩数据存储器(RAM) 相关引脚(以8051为例) /WR:写片外数据存储器信号,低电平有效 /RD:读片外数据存储器信号,低电平有效 ALE:允许地址所存信号,用于所存片外地址的低8位 P0.0~P0.7: 数据线,同时也是低8位地址线 P2.0~P2.7:高8位地址线 指令集 而访问外部RAM则需要在程序设计上使用指令MOVX来执行。另外,访问内部RAM则使用了指令MOV,以区分外部RAM的访问7.3.4 存储器扩展——数据存储器扩展null例:8051外扩数据存储器7.3.4 存储器扩展——数据存储器扩展null8051外扩数据存储器 按上图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的地址范围如下,四部分重复。 0x0000~0x1FFF 0x2000~0x3FFF 0x8000~0x9FFF 0xA000~0xBFFF ??如何解决地址重复问题7.3.4 存储器扩展——数据存储器扩展null下图是两片数据存储器芯片6264与8051单片机的连接。 6264是8K8的静态数据存储器芯片 有13根地址线 数据线8根 一根输出允许信号OE和一根写控制信号WE 两根片选信号CE1和CE2 (都是低电平有效)7.3.4 存储器扩展——数据存储器扩展nullP2.7为低电平0,两片6264芯片的地址空间为: 第一片:01000000000000000~0101111111111111,即4000H~5FFFH; 第二片:00100000000000000~0011111111111111,即2000H~3FFFH; P2.7为高电平1,两片6264芯片的地址空间为: 第一片:11000000000000000~1101111111111111,即C000H~DFFFH; 第二片:10100000000000000~1011111111111111,即A000H~BFFFH;7.3.4 存储器扩展——数据存储器扩展null 见电路板原理图,确定数据存储器6264的地址范围7.3.4 存储器扩展——数据存储器扩展null7.4 简单输入/输出口扩展通常通过数据缓冲器、锁存器来扩展简单I/O接口。74LS373、74LS244、74LS273、74LS245等芯片都可以作简单I/O扩展。 实际上,只要具有输入三态、输出锁存的电路,就可以用作I/O口扩展。 下图是利用74LS373和74LS244扩展的简单I/O口 其中74LS373扩展并行输出口,前面已经讲过 74LS244扩展并行输入口 74LS244是单向数据缓冲器,带两个控制端1G和2G ,当它们为低电平时,输入端D0~D7的数据输出到Q0~Q7。 null74LS244见右图 引脚介绍 /1G,/2G:选通控制(低电平有效) 1Y1~2Y4:数据输入端 1A1~2A4:数据输出端7.4 简单输入/输出口扩展null74LS373: 带输出三态门的8D锁存器 74LS373引脚功能 D[7..0]为8个输入端。 Q[7..0]为8个输出端。 LE:数据锁存控制端。 当LE为“1”时,锁存器输出端同输入端变化; 当LE为“0”时, 数据输入被锁存,输出固定。 OE 为输出允许端: 当OE 为“0”时, 三态门打开,可以驱动总线或负载; 当OE 为“1”时, 三态门关闭, 输出呈高阻状态。7.4 简单输入/输出口扩展null教材例题连线7.4 简单输入/输出口扩展null电路板 连线设计7.4 简单输入/输出口扩展null为什么要使用绝对地址 在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。 单片机系统扩展的电路连线确定后,存储器芯片或者I/O端口已经被分配了固定的地址空间,只有地址对应,才可访问所需要的地址单元 C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL51连接定位后才能确定。 为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用扩展关键字“at”、指针、预定义以及连接定位控制命令。 一.使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下:7.5 C51中对绝对地址的访问null对绝对地址的访问一共有3钟形式 使用C51运行库中预定义宏 通过指针访问 通过指针访问 一.使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下:7.5 C51中对绝对地址的访问null绝对地址访问方式一:使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下: #define CBYTE((unsigned char volatile*)0x50000L) #define DBYTE((unsigned char volatile*)0x40000L) #define PBYTE((unsigned char volatile*)0x30000L) #define XBYTE((unsigned char volatile*)0x20000L) #define CWORD((unsigned int volatile*)0x50000L) #define DWORD((unsigned int volatile*)0x40000L) #define PWORD((unsigned int volatile*)0x30000L) #define XWORD((unsigned int volatile*)0x20000L) 这些函数原型放在absacc.h文件中。使用时须用预处理命令把该头文件包含到文件中,形式为:#include 。 7.5 C51中对绝对地址的访问null 访问形式: 宏名[地址] 宏名为CBYTE、DBYTE、PBYTE、XBYTE、CWORD、DWORD、PWORD或XWORD。 地址为存储单元的绝对地址,一般用十六进制形式表示。7.5 C51中对绝对地址的访问null存储器类型 存储器类型是用于指明变量所处的单片机的存储器区域情况。存储器类型与存储种类完全不同。C51编译器能识别的存储器类型有以下几种,见表所示。定义变量时也可以省“存储器类型”,省时C51编译器将按编译模式默认存储器类型,具体编译模式的情况在后面介绍。7.5 C51中对绝对地址的访问null绝对地址对存储单元的访问 #include /*将绝对地址头文件包含在文件中*/ #include /*将寄存器头文件包含在文件中*/ void main(void) { unsigned char var1; unsigned int var2; var1=XBYTE[0x0005]; /*XBYTE[0x0005]访问片外RAM的0005字节单元*/ var2=XWORD[0x0002]; /*XWORD[0x0002]访问片外RAM的000字单元*/ ...... while(1); } 在上面程序中,其中XBYTE[0x0005]就是以绝对地址方式访问的片外RAM 0005字节单元;XWORD[0x0002]就是以绝对地址方式访问的片外RAM 0002字单元。7.5 C51中对绝对地址的访问null绝对地址对存储单元的访问 #include /*将绝对地址头文件包含在文件中*/ #include /*将寄存器头文件包含在文件中*/ #define ADDR1 XBYTE[0x0005] //声明宏 #define ADDR2 XWORD[XWROD] void main(void) { unsigned char var1; unsigned int var2; var1=ADDR1; var2=ADDR2; ...... while(1); } 7.5 C51中对绝对地址的访问null绝对地址访问方式二:通过指针访问 采用指针的方法,可以实现在C51程序中对任意指定的存储器单元进行访问。 【例】 通过指针实现绝对地址的访问。 void func(void) { unsigned char data var1; unsigned char pdata *dp1; /*定义一个指向pdata区的指针dp1*/ unsigned char xdata *dp2; /*定义一个指向xdata区的指针dp2*/ unsigned char data *dp3; /*定义一个指向data区的指针dp3*/ dp1=0x30; /*dp1指针赋值,指向pdata区的30H单元*/ dp2=0x1000; /*dp2指针赋值,指向xdata区的1000H单元*/ *dp1=0xff; /*将数据0xff送到片外RAM30H单元*/ *dp2=0x12; /*将数据0x12送到片外RAM1000H单元*/ dp3=&var1; /*dp3指针指向data区的var1变量*/ *dp3=0x20; /*给变量var1赋值0x20*/ }7.5 C51中对绝对地址的访问null绝对地址访问方式三:使用C51扩展关键字_at_ 使用_at_对指定的存储器空间的绝对地址进行访问,格式如下: [存储器类型] 数据类型说明符 变量名 _at_ 地址常数; 其中: 存储器类型为data、bdata、idata、pdata等C51能识别的数据类型,如省略则按存储模式规定的默认存储器类型确定变量的存储器区域; 数据类型为C51支持的数据类型。 地址常数用于指定变量的绝对地址,必须位于有效的存储器空间之内; 强调:使用_at_定义的变量必须为全局变量。7.5 C51中对绝对地址的访问null绝对地址访问方式三:使用C51扩展关键字_at_ 【例】通过_at_实现绝对地址的访问。 void main(void) { data unsigned char x1 _at_ 0x40; /*在data区中定义字节变量x1,它的地址为40H*/ xdata unsigned char x2 _at_ 0x2000; /*在xdata区中定义字变量x2,它的地址为2000H*/ x1=0xff; x2=0x12; ...... while(1); }7.5 C51中对绝对地址的访问null【项目实践】通过端口扩展方式实现: (1)流水灯 (2)开关数据控制发光二极管 硬件连线 P0口——JP24; JP26——发光二极管; JP25——拨码开关;使用短路帽短路J9 提示:注意确定74LS373和74LS244的地址null7.6 可编程I/O扩展(8255A)8255A是在单片机应用系统中广泛采用的I/O接口扩展芯片。 8255A是Intel公司生产的8位可编程并行接口芯片 有3个可编程的并行I/O端口:PA口、PB口和PC口null7.6 可编程I/O扩展(8255A)8255A的结构null8255A的内部结构 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口和C口的下半部合称为B组。 可通过指令单独设置A、B、C口为输入口或为输出口 数据总线缓冲器:双向、三态、8位,连接在CPU和8255之间的接口模块;完成①向内部写入控制命令字;②向A口、B口、C口发送或接收数据。 读写控制模块:接受CPU的读写命令、地址信号。7.6 可编程I/O扩展(8255A)null①和外设一边相连的信号 PA7~PA0——A组数据信号; PB7~PB0——B组数据信号; PC7~PC0——C组数据信号。 ②和CPU一边相连的信号 (见图6.32) RESET 复位信号,高电平有效 。 D7~D0 数据线、双向 。 片选信号,低电平有效。 读出信号。低电平时从选中的端口读出数据,经系统数据总线送入CPU; 写入信号。低电平时,向选中的端口写入数据; A1、A0 端口选择信号,接系统地址线。8255A的外部引脚7.6 可编程I/O扩展(8255A)8255与系统的连接示意图8255与系统的连接示意图null3.8255A的端口地址与读写操作 8255A的读写操作8255A的读写操作8255A 控制8255A 控制1.方式选择控制字 8255A有两种控制字:①方式选择;②C口置1/0;注意:有三种基本工作方式: 方式0——基本的输入输出方式; 方式1——选通的输入输出方式; 方式2——双向传输方式 ;只有端口A能工作在方式2; 同一组的两端口可分别工作在输入和输出方式。 null2.端口C按位置1/置0控制字 提示: ① 置1/置0控制字必须写入控制口; ② D7位必须为0; ③ D0位决定置1或置0; ④ D3、D2、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 =94H3.8255A初始化编程应用举例:J2: 端口A地址 00E8H 端口B地址 00E9H 端口C地址 00EAH 控制口地址 00EBHnull8255A有三种工作方式: 方式0:基本型输入输出方式(无条件传送方式); 方式1:选通型输入输出方式; 方式2:双向数据传送方式。 A口:上述三种方式都可以; B口:只能工作在方式0和方式1; C口:只能工作在方式0。 当A口工作在方式1或方式2, B工作在方式1时,C口的一部分可以作为端口与外设之间的联络线。null8255的工作方式0——基本型输入输出方式 方式0的工作特点 (1)端口与外设之间没有联络线,端口没有中断功能,不提供状态信息 (2)各端口独立,即可作为输入口,也可作为输出口,相互之间无任何关系; (3)CPU与端口之间采用无条件传送方式输入输出数据:外设随时准备就绪,CPU想输入数据就可以输入;想输出数据就可以输出。 nullnullnullnull【项目实践】通过8255扩展方式实现: (1)流水灯 (2)按键数据在七段数码管上显示 硬件连线 CPU的:P0口——JP20; P2口——JP21(扭接); 8255的:PA口——JP18;PB口——JP19; PC口——JP17 使用短路帽短路J9 [提示]重点确定8255的端口输入/输出方向,及8255的端口地址
本文档为【第07章 单片机系统扩展】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_564008
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2012-03-07
浏览量:15