51单片机对外部ram的存取
答案:3 悬赏:30 手机版
解决时间 2021-02-27 10:37
- 提问者网友:姑娘长的好罪过
- 2021-02-27 03:50
用#include "absacc.h"头文件,对于典型的电路接法,直接写ram=XBYTE[0x0000]或XBYTE[0x0000]=ram就能完成对ram的读写么,外部WR,OE,ALE信号就不用控制了么。是不是先前要有什么设置。最好举一个完整的例子说明一下,对外部的电路也做一下简单的说明,控制信号都是怎么接的,接法不一样对应的程序一改怎么变?初学者,渴望赐教。
最佳答案
- 五星知识达人网友:長槍戰八方
- 2021-02-27 04:56
是的。
对于典型电路接法,对应的WR、OE、ALE信号引脚接在RAM芯片对应引脚,单片机会自动配置各个引脚的时序,以完成XBYTE指令直接访问外部RAM的功能。
这里您所担心的对外部WR,OE,ALE信号的控制实际上是把典型电路接法与用单个引脚模拟端口外接RAM的使用方法混淆了。
比如89C2051单片机,其外部引脚没有P0口和WR、RD、OE、ALE这些引脚,某些情况下非得需要其配合外置RAM使用时,需要定义某些IO脚(譬如P1)模拟为数据接口、某些IO脚(譬如P1、P3)模拟为地址接口、某些IO模拟WR、RD、OE、ALE功能。这个时候就需要控制了:
先准备好要告诉RAM给它发送地址了(控制模拟ALE那个引脚的电平),然后控制模拟WR的那个引脚,准备告诉RAM你是要给它写地址;
然后往地址接口上放地址数据,准备告诉RAM读什么地址(控制模拟的P0、P2口);
片选通知RAM来读取地址(模拟OE的那个引脚给片选电平,通常低电平为选中);
等待RAM响应后,转换WR和RD的电平读出RAM在上述地址中存储的数据。
大致如此,你可以在相应的学习板或者自己搭建的板子上试试~
对于典型电路接法,对应的WR、OE、ALE信号引脚接在RAM芯片对应引脚,单片机会自动配置各个引脚的时序,以完成XBYTE指令直接访问外部RAM的功能。
这里您所担心的对外部WR,OE,ALE信号的控制实际上是把典型电路接法与用单个引脚模拟端口外接RAM的使用方法混淆了。
比如89C2051单片机,其外部引脚没有P0口和WR、RD、OE、ALE这些引脚,某些情况下非得需要其配合外置RAM使用时,需要定义某些IO脚(譬如P1)模拟为数据接口、某些IO脚(譬如P1、P3)模拟为地址接口、某些IO模拟WR、RD、OE、ALE功能。这个时候就需要控制了:
先准备好要告诉RAM给它发送地址了(控制模拟ALE那个引脚的电平),然后控制模拟WR的那个引脚,准备告诉RAM你是要给它写地址;
然后往地址接口上放地址数据,准备告诉RAM读什么地址(控制模拟的P0、P2口);
片选通知RAM来读取地址(模拟OE的那个引脚给片选电平,通常低电平为选中);
等待RAM响应后,转换WR和RD的电平读出RAM在上述地址中存储的数据。
大致如此,你可以在相应的学习板或者自己搭建的板子上试试~
全部回答
- 1楼网友:琴狂剑也妄
- 2021-02-27 06:39
典型的51单片机内部ram是256b,8根地址线(8位),这256b共分为高128位和低128位,用户使用的区域是低128位(即00h~7fh),通过程序计数器pc寻址。
51单片机的外部ram可扩展到64kb,16根地址线(16位),使用dptr作为外部ram的寻址指针。
程序存储器:也就是rom,是存放用户程序(如汇编程序或c程序)的地方,典型的51单片机内部rom为4kb,若是使用外部rom可以扩展到64kb。
数据存储器:是存放用户程序运行过程中的中间结果或者运算结果,也就是内部ram或外部ram。
mov: 单片机内部ram的数据传送指令
movx: 单片机外部ram的数据传送指令
- 2楼网友:持酒劝斜阳
- 2021-02-27 05:10
你用的是51单片机?
你可以使用Debug看看ram=XBYTE[0x0000]和XBYTE[0x0000]=ram编译成的汇编语言室什么样子的,是不是使用到了MOVX指令?只要使用了MOVX指令访问外部RAM,ALE、RD、WR信号就是必须用到了。
可能是你认识的误区,认为在使用汇编时才会用到那些信号而在使用C语言时不会。C语言虽然高级,但也是使用汇编语言堆砌而成的。
使用MOVX指令外部RAM时,ALE、RD和WR信号由CPU自动产生,不需要使用软件模拟。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯