51单片机系统中有关外部扩展芯片的地址问题

1.“51单片机的外部RAM和I\O口是统一编址”,是什么意思2.书上说51单片机的ROM和RAM的地址可以重叠使用,因此ROM和RAM之间不会因地址重叠而产生数据冲突的... 1.“51单片机的外部RAM和I\O口是统一编址”,是什么意思
2.书上说51单片机的ROM和RAM的地址可以重叠使用,因此ROM和RAM之间不会因地址重叠而产生数据冲突的问题,但是I\O芯片与RAM是统一编址的,这个RAM是内部RAM还是外部RAM
展开
 我来答
lylxy1965
2011-08-02 · TA获得超过2413个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:216万
展开全部
1、“51单片机的外部RAM和I\O口是统一编址”:这句话好像不对吧,应该是内部RAM。
51单片机中的IO口结构上说起来比较复杂,最好详细了解一下其结构原理。目前阶段你不妨暂时这样理解,就是IO口线+对应的寄存器,向IO口写1或写0,其实就是先向寄存器写0或写1。
回到你的问题,这4组IO口有4个寄存器,在51单片机中也是有地址的,P0是0x80、P1是0X90、P2是0XA0、P3是0XB0,而内部RAM的地址从0x00到0x7F。比如直接寻址方式采用同样一条指令访问寄存器,如果地址是0x00,则访问的是内部RAM,如果地址是0x80,则访问的就是P1口也就是IO口了。这就是所谓的统一编址。
多说一句,52增强型单片机虽然内部RAM增加了128字节,地址范围从0到0xff,但从0x80到0xff都采用的是间接寻址方式,操作上是可以区分开的。如果你今后学习汇编这点要注意,C语言就不用理会了,编译器会自动处理的。
重复一下,上述说法仅助你目前阶段的理解,更准确的需要去看IO口结构图。
2、上面其实已经回答了此问的后半部分。至于ROM和RAM地址重叠使用,这里的RAM一定指的是外部RAM!单片机对外部RAM和外部ROM的访问,地址信息是通过P0(低8位)和P2(高8位)送出;控制信号:对RAM读写的是WR和RD(即P3.6、P3.7),对ROM读取的则是PSEN(对ROM读取就是从外部ROM读取单片机的程序代码)。具体实现是由单片机在一个机器周期内不同时间段分时自动完成的,不用你去干预。
所谓重叠使用,其实我觉得如果使用分开编址,互不干扰更贴切一些,正如上面所说,对外部ROM和外部RAM的访问是单片机分时完成的,互不干扰。这一点稍微深入了解后看一下相应的时序图你就明白了。
追问
“51单片机的外部RAM和I\O口是统一编址”这是书上的话,不太明白,所以才问的
统一编址可不可以理解为他们都用统一种寻址方式,用统一条指令
追答
书上的东西有时也会有错的。我搞51单片机很多年了,对其可以说非常熟悉,也看过很多教材,“51单片机的外部RAM和I\O口是统一编址”这句话一般而言讲的应该是内部RAM。不过还有一种可能:“51单片机的外部RAM和扩展I\O口是统一编址”,如果是这样,那么这句话所表述的含义就是对的,不过总的来说这句话不严谨。这种方式下,对扩展IO口的访问就像访问外部RAM一样,IO口有地址,改变其状态就是向此地址写数,获得其状态就是从该地址读数。在地址分配上,具体的地址是由设计者自己来定的,只要外部RAM的地址和扩展IO的地址不重叠就可以。
所谓统一编址,举个例子吧:比如需要外扩32KRAM(比如采用62256)、16个IO口(比如采用82C55)、1路AD转换(比如使用7135),需要3个外围芯片,那么可以给RAM分配地址范围0x0000~0x7FFF,IO分配地址0x8000,AD转换分配地址0xC000,总之相互间不能有重叠(可以通过诸如74HC138之类的译码器给上述芯片提供片选信号)。这样将所有访问地址都统一到一个64K范围内,就是统一编址。至于访问上,采用的寻址方式和指令都一样,对RAM适用的,对其它也适用,比如可以用MOVX A,@DPTR,也可以用MOVX A,@R0,这点倒是可以随意。
做而论道
高能答主

2011-08-02 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
1.“51单片机的外部RAM和I\O口是统一编址”,是什么意思
从电路、指令,两个方面来看,外部RAM和I\O口,都没有区别。
相比80x86,它的RAM和接口,电路不同,指令也不同,就是说,它们互相是独立的。

2. 准确说法是:
51单片机的ROM和““片外RAM“”的地址可以重叠使用,因此ROM和““片外RAM“”之间不会因地址重叠而产生数据冲突的问题,
但是I\O芯片与RAM是统一编址的,这个RAM是内部RAM还是外部RAM?
--是外部RAM。
追问
那扩展了外部的RAM后,可不可以把RAM当做并行扩展的I\O口使用,我看书上说的好像是可以的

还有一个问题就是在下载程序的时候怎么才能把.hex程序文件下载的扩展的外部ROM中,又怎么样使用外部RAM呢
追答
RAM就是RAM,怎么能当IO口?
它们是完全不同的芯片。
下载程序,可以写入外部的ROM,只是写入的方法,和写入内部ROM是完全不同的。
怎样使用RAM?
和使用IO口的方法是相同的,区别就是它们是RAM。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ATF144X
2011-08-02 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4611万
展开全部
1.举个列子说,一个51单片机系统外部接了SRAM芯片62256和IO芯片8255,62256分配的地址是0x0000~0x7FFFF,8255分配地址0x8000~0x8003,。这两个器件都处于0x0000~0xFFFF的地址范围之内,都使用MOVX指令来实现访问,即统一编址的。

对于计算机,比如8088 CPU,访问外部存储器使用MOV指令,访问外部IO使用IN/OUT指令,这就是独立编址的。

2.这里的“ROM”是指的程序存储器吧?访问用的MOVC指令,控制ROM片选使用的PSEN信号。而访问RAM或者IO使用的片选信号是地址译码和RD、WR信号的组合,所以不会出现重叠的问题。
追问
那扩展的RAM可不可以当做并行扩展的I\O口使用,我看书上的意思是可以
追答
在51单片机中,RAM和IO的访问有什么差别呢?都是用的MOVX指令。但是RAM没有IO的功能,不能当做IO使用的啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙里波特
2021-04-08 · TA获得超过5243个赞
知道大有可为答主
回答量:1.1万
采纳率:100%
帮助的人:614万
展开全部

51 单片机的片外RAM 和 I\O 口是统一编址,是什么意思

--51 单片机,有读写“片外RAM”的功能。

--51 单片机,却没有“输入输出”的功能。

--如果你想使用“I/O 接口”,只能按照“片外RAM”来操作。

--就是把“IO接口芯片”和“片外RAM芯片”统一编址。

书上说51单片机的ROM和RAM的地址可以重叠使用,

--各自有各自的存储空间,哪有什么重叠!

因此ROM和RAM之间不会因地址重叠而产生数据冲突的问题,

--注意:应该是 ROM 和 片外RAM 之间,不会因 ...

但是I\O芯片与RAM是统一编址的,

这个RAM是内部RAM还是外部RAM--当然是片外RAM 了。

--在前面,你都说了“外部RAM和I\O口是 ...”,

--你这就忘了吗?  呵呵

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式