使用片外ROM问题?

[复制链接]
4404|11
 楼主| nudf0009 发表于 2011-7-8 16:29 | 显示全部楼层 |阅读模式
89C51有4K的片内ROM,还可以片外扩展到64K的ROM,这时,片内、外ROM开始的4K是重叠的。当EA=1时,CPU从片内ROM取指令,超过4K的从片外ROM取指令。这时候,取指令的地址是在000H-FFFH范围,还是在片外4K以上的地址范围?
gx_huang 发表于 2011-7-8 16:39 | 显示全部楼层
EA=1,是先片内,再片外,片外当然要4K以上了。
EA=0,直接是片外了。
 楼主| nudf0009 发表于 2011-7-8 17:07 | 显示全部楼层
但是开始的4K是重叠的,那怎么处理?
gx_huang 发表于 2011-7-8 17:12 | 显示全部楼层
外边的前4K没有作用,不会重叠的。
 楼主| nudf0009 发表于 2011-7-8 20:09 | 显示全部楼层
如果扩展片外ROM,开始的4KROM不会使用到,这4KROM造成浪费了?
shgxx015 发表于 2011-7-8 22:01 | 显示全部楼层
同楼上一起问,应该是的,不然会有重叠的问题,我觉的
chunyang 发表于 2011-7-8 23:21 | 显示全部楼层
不会有重叠。
golon11 发表于 2011-7-9 10:24 | 显示全部楼层
支持一下!~






www.pcbout.com
江陵龙少 发表于 2011-7-9 12:31 | 显示全部楼层
本帖最后由 江陵龙少 于 2011-7-9 12:42 编辑

这个问题本质是:
在片外寻址时,将会用到如下信号脚,或者说这些管脚将会使用:
P0,P2,/PSEN,ALE
在/EA=1时,当PC指针指向0~4KB地址范围时,AT89C51通过其内部的总线在内部ROM中取得代码,上述的功能管脚将不起作用,(比如说,选通信号脚/PSEN就没有输出振荡信号,P2、P0根本没有送出地址),因此,片外ROM  0~4KB地址范围内的内容将绝无可能取得到。
当地址超过4KB时,这时上述功能管脚将工作起来,协同合作,由P2送出高地址,P0送出低地址,ALE乘机锁存,/PSEN趁势选通外部ROM,P0上也就获得了片外ROM空间的数据,这个数据也就送入了控制与运算单元。
理清了这个过程,就不会有地址发生冲突的可能
 楼主| nudf0009 发表于 2011-7-9 20:16 | 显示全部楼层
8051如果扩展片外ROM,当EA=1时,在4K内,就读片内的,超过4K的读片外的。片外扩展ROM中,低4K的就不会使用到,形成浪费了。
相信哥咯 发表于 2011-7-9 22:35 | 显示全部楼层
本帖最后由 相信哥咯 于 2011-7-10 10:26 编辑

假如片外接2k rom,那么它的地址就是4k~6k,
 楼主| nudf0009 发表于 2011-7-11 10:27 | 显示全部楼层
不对吧,片内、片外是统一编址的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

157

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部