(地址锁存及IO扩展.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(地址锁存及IO扩展

单片机地址锁存及IO扩展 I/O端口P0~P3(80H,90H,A0H,B0H) P0—P3为4个8位特殊功能寄存器,分别是4个并行I/O端口的锁存器。它们都有字节地址,端口的每一位可以进行位操作,每一条I/O线均可独立用作输入或输出。 用作输出时,可以锁存数据;用作输入时,数据可以缓冲。 在单片机接口扩展系统中各端口功能 无论有无片外存储器扩展,P1端口均可用作通用I/O端口使用。 在单片机接口扩展系统中,P0口用作输出地址/数据总线,此时,P0无法再作I/O口使用了。 在单片机接口扩展系统中, P2口只输出高8位地址。 P3口可以用作第二功能使用 地址总线宽度为16位,可寻址范围64K字节。 地址锁存器 地址锁存器(74373) 74373内部逻辑 6264是8K*8的静态随机存储器。 A0-A12为片内13位地址线,I/O0-I/O7为双向三态数据线,/CE为片选信号,/OE为读允许信号,/WE为写信号。 #include reg51.h xdata unsigned char *port; xdata unsigned char Buffer[256] _at_ 0x6000; main() { unsigned char tmp=0x55; unsigned char j; port = Buffer; while(1) { for(j=0;j256;j++) { tmp++; *port++ = tmp; } } } 简单并行输出接口的扩展 在单片机的并行接口扩展中,常采用TTL、CMOS锁存器、缓冲器构成简单的扩展接口。其中,在输出接口的扩展中经常选用具备锁存功能的芯片实现,一般有:74273,74373,74573、74574等。在本节以74273为例,介绍输出接口的扩展实现。 74273引脚和功能原理 D0—D7为数据输入引脚,Q0—Q7为数据输出引脚,CP为时钟脉冲输入端,/MR为清零端。从内部逻辑图看出,74273为内部集成八路D触发器的锁存器,芯片的CP引脚与八路D触发器的时钟控制端相连,完成数据锁存的控制。 访问外设端口的软件设置 单片机系统外扩的接口芯片或外扩片外数据存储器统一编址,占用外部数据存储器0000---FFFFH空间,因此,片外扩展I/O口的硬件译码地址,看作片外数据存储单元访问。 #includeabsacc.H #define 变量名 XBYTE[地址常数] 举例——对片外的1000H单元进行数据的写操作,设计方法如下 #includereg51.h #include absacc.h #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,控制在数码块上轮回显示从0—F的16个字符。 C51源程序为: #include reg51.h #include absacc.h #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) {

文档评论(0)

lisuf331 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档