网站大量收购闲置独家精品文档,联系QQ:2885784924

第9章 外设扩展.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 外设扩展

(4)键盘组2片选信号 键盘组2和键盘组1的电路实现方式一模一样,只不过片选地址不同而已, 键盘组2的寻址地址为:011x xxxx xxxx xxxxb。 第九章 51单片机外设扩展 一、外部RAM扩展 二、总线控制字符液晶1602 三、外部键盘的扩展 一、外部RAM扩展 1、静态RAM存储芯片 2、静态RAM总线 3、静态RAM控制总线 CE、CS、WE、OE为控制总线,它们的定义为: ① CS(chip enable):片选信号2,在读/写方式时为高电平。 ② CE(chip enable):片选信号1,在读/写方式时为低电平。 ③ WE(write enable):写允许信号,低电平有效。 ④ OE(output enable):读出允许信号,低电平有效。 4、电路设计方案 (1)锁存器74373 (2)地址总线和数据总线的连接 (3)控制总线的连接方式 (4)对外部RAM的寻址范围 5、外部数据寻址指令 (1)汇编语言指令 对外部RAM单元只能使用间接寻址的方式,可以分别使用DPTR、R0或R1作间接寄存器,因此相应的指令有两组: ① 使用DPTR进行间接寻址 MOVX A,@DPTR MOVX @DPTR,A 因为DPTR是16位地址指针,因此该指令的寻址范围可达64K。 ② 使用R0或R1进行间接寻址 MOVX A,@R0 或MOVX A,@R1 MOVX @R0,A 或MOVX @R1,A 由于R0或R1是8位数据寄存器,因此指针的寻址范围为外部数据存储器的256单元。 外部RAM数据传送指令与内部RAM数据传送比较,在指令助记符中增加了“X”,“X”是代表外部。当使用外部RAM传送指令: MOVX @DPTR,A MOVX A,@R0 对外部存储器写入数据时,单片机的P3.6(WR)为0,WR同6264的WE相连,这样做间接对RAM实现了片选。 当使用指令: MOVX @DPTR,A MOVX @R0,A 读取外部RAM的数据时,单片机的P3.7(RD)置0,RD同6264的OE相连。同样在指令操作过程中,间接对外部设备实现了片选。 (2)C语言实现对外部设备的存取方式 C51对外部RAM的读取是非常简单的,Keil为我们提供了一个库文件“ABSACC.H”。在这个库文件里面有我们所需要的宏定义子程序,调用相应的子程序就可实现我们的目的。 有6个宏定义子程序: CBYTE、DBYTE、XBYTE、CWORD、DWORD、XWORD 这6个关键子程序又叫绝对存储区访问宏。利用它们,就可以方便的从不同程序段的特定地址获取数据,或者写入数据到特定地址之中。 ① XBYTE、XWORD XBYTE 宏允许访问 8051 外部RAM区的单个字节。例如: unsigned char rval; rval = XBYTE[0x0002]; //读外部地址0x0002的单元数据 XBYTE[0x002] = 57; //将57传送到外部地址0x002的单元 XWORD 宏允许访问 8051 外部RAM区的单个字。例如: unsigned int ral; rval = XWORD[0x0002]; //读取外部地址0x0002、0x0003的数据 XWORD[0x002] = 0x2345; //将0x45传送到外部地址0x002, //将0x23传送到外部地部址0x003 ② DBYTE、DWORD DBYTE 宏允许访问8051内部RAM区的单个字节。例如: unsigned char rval; rval = XBYTE[0x02]; //读内部RAM地址0x02的数据 DBYTE[0x02] = 57; //将57传送到内部RAM地址0x02的单元 DWORD 宏允许访问8051 内部RAM区的单个字。例如: unsigned int ral; rval = DWORD[0x02]; //读取内部RAM地址0x02、0x03的数据 DWORD[0x002] = 0x2345; //将0x45传送到内部RAM地址0x02,将0x23传送到 //内部RAM地址0x03 ③ CBYTE、CWORD CBYTE 宏允许访问8051 程序(code)存储区的单个字节。例如: unsigned char

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档