地址锁存及IO扩展.ppt_第1页
地址锁存及IO扩展.ppt_第2页
地址锁存及IO扩展.ppt_第3页
地址锁存及IO扩展.ppt_第4页
地址锁存及IO扩展.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机地址锁存及IO扩展,/端口P0P3(80H,90H,A0H,B0H),P0P3为4个8位特殊功能寄存器,分别是4个并行/端口的锁存器。它们都有字节地址,端口的每一位可以进行位操作,每一条/线均可独立用作输入或输出。 用作输出时,可以锁存数据;用作输入时,数据可以缓冲。,在单片机接口扩展系统中各端口功能,无论有无片外存储器扩展,P1端口均可用作通用I/O端口使用。 在单片机接口扩展系统中,P0口用作输出地址/数据总线,此时,P0无法再作I/O口使用了。 在单片机接口扩展系统中, P2口只输出高8位地址。 P3口可以用作第二功能使用 地址总线宽度为16位,可寻址范围64K字节。,地址锁存器,锁存器在地址扩展中的作用就是锁存地址,地址锁存器74373是带三态缓冲输出的8D锁存器. 锁存器锁存原理 ALE作为低8位地址锁存选通信号,当为高电平时,复用数据总线上为地址数据。,地址锁存器(74373),74373内部逻辑,芯片介绍SRAM 6264,6264是8K*8的静态随机存储器。 A0-A12为片内13位地址线,I/O0-I/O7为双向三态数据线,/CE为片选信号,/OE为读允许信号,/WE为写信号。,硬件接口电路设计,#include xdata unsigned char *port; xdata unsigned char Buffer256 _at_ 0x6000; main() unsigned char tmp=0x55; unsigned char j; port = ,向连续存储空间写入数据的C51程序,简单并行输出接口的扩展,在单片机的并行接口扩展中,常采用TTL、CMOS锁存器、缓冲器构成简单的扩展接口。其中,在输出接口的扩展中经常选用具备锁存功能的芯片实现,一般有:74273,74373,74573、74574等。在本节以74273为例,介绍输出接口的扩展实现。,74273引脚和功能原理,D0D7为数据输入引脚,Q0Q7为数据输出引脚,CP为时钟脉冲输入端,/MR为清零端。从内部逻辑图看出,74273为内部集成八路D触发器的锁存器,芯片的CP引脚与八路D触发器的时钟控制端相连,完成数据锁存的控制。,简单并行输出接口的扩展,访问外设端口的软件设置,单片机系统外扩的接口芯片或外扩片外数据存储器统一编址,占用外部数据存储器0000-FFFFH空间,因此,片外扩展I/O口的硬件译码地址,看作片外数据存储单元访问。 #include #define 变量名 XBYTE地址常数,举例对片外的1000H单元进行数据的写操作,设计方法如下,#include #include #define port XBYTE 0x1000; void main(void) int temp; While(1) temp = port; ,注意:,程序中,#define用于定义将外部1000H端口命名为port,定义端口寄存器的长度为8位。通过上述定义,于是,在程序中出现的Port变量映射为外部寄存器地址单元,访问地址为1000H。程序设计中,对外部1000H地址的读操作就可以直接写作“temp = port”即可,其中,temp为设计的临时变量。,应用设计举例,应用74273扩展单片机的输出端口,设定74273的端口访问地址为7FFFH,控制在数码块上轮回显示从0F的16个字符。,C51源程序为: #include #include #define port XBYTE 0x7FFF unsigned char table= 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f;/设置数码块显示数据表 void delay(void) unsigned int i; for(i=0;i40000;i+); void main(void) unsigned int i; while(1) for(i=0;i10;i+) port=tablei; /从数码块显示字表读取数据,通过74273输出显示 delay(); ,74244设计应用举例,应用74273、74244芯片实现简单的并行接口的扩展。电路实现的功能:按键的状态通过74244芯片缓冲读入,通过74273锁存输出,在八个LED发光二极管上显示。,程序设计,#include #define port_273 XBYTE 0xFEFF / 定义访问的外部端口变量 #define port_244 XBYTE 0xFDFF / 定义访问的外部端口变量 void delay(void) unsigned int i; for(i=0;i40000;i+); void main() unsigned int tmp; While(1) tmp = port_244 ; /从74244端口读取数据 delay( ) ; port_273 = tmp; /将读取的数据通过74273锁存输出, /通过硬件电路在发光二极管上显示 ,分析与讨论:如果将74273和74244的功能交换,即用273作输入口扩展,244作输出口扩展,是否可行?,答案是否定的。 由于P0口分时输出数据/地址信息,因此,作为输出端口要求具有锁存功能,当芯片选通时,锁存输出数据,当芯片选通结束,数据依然能够保持在输出端口。 在作为输入端口使用时,由于单片机的总线端口常常要对多个外设端口进行分时访问,因此,要求作为输入与总线相连的接口芯片具有缓冲功能。即当总线访问该接口芯片时,选片信号有效,该芯片的缓冲器三态门打开,数据输入总线。当该芯片不被选中时,芯片三态门处与高阻态,此时,芯片的输出被断开,对总线不起作用,总线此时可以被其他器件占用。,数据线D0D7:接于P0接口 连接I/O设备信号线: PA、PB、PC共24条端线。 A1 A0 端口选择: 00A口 01B口 10C口 11 控制口 /CS:片选信号。低电平有效 /RD,/WR:芯片读出,写入信号; 低电平有效。 RESET:复位端。为1时,清除内部寄存器内容,3个数据口为输入方式。,可编程并行接口芯片8255A,8255A的三种工作方式,设置A、B、C端口的工作模式,8255A与单片机的接口电路设计实例,采用8255A实现输入和输出扩展功能的电路原理图,要求实现外接发光二极管由拨动开关相应位的状态进行控制的功能。,硬件电路分析,电路中单片机的/RD、/WR信号分别与8255的读写信号相连,RESET通过电阻接低电平。 8255的/CS信号与单片机的P2.7引脚相连 74373为地址锁存器,单片机的A0、A1经过所存与8255的A0、A1脚连接,根据硬件电路连接,则在8255内部的四个寄存器的访问地址分别为: A口:7FFC B口:7FFD C口:7FFE D口:7FFF 在地址译码时,不被使用的地址线设置访问地址时默认为高电平。,编写C51程序如下,#include #include #define COM8255 XBYTE0x7FFF /根据硬件电路,设置命令控制寄存器 地址 #define PA8255 XBYTE0x7FFC /设置输入端口A的访问物理地址 #define PB8255 XBYTE0x7FFD /设置输出端口B的访问物理地址 un

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论