MCS-51单片机扩展系统中,片外程序存储器和片外数据存储器共处同一个地址空间,为啥不会发生总线冲突?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MCS-51单片机扩展系统中,片外程序存储器和片外数据存储器共处同一个地址空间,为啥不会发生总线冲突?相关的知识,希望对你有一定的参考价值。
扩展系统这个概念比较模糊,什么是总线冲突也不知道??
因为控制信号线的不同:外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为OE和WE。外扩RAM的读、写控制引脚分别与MCS-51的RD和WR引脚相连。
外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与MCS-51单片机的PSEN相连
访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间硬件上,控制信号不一样:片外程序存储器工作,要PSEN信号有效。
片外数据存储器工作,要RD或WR信号有效;软件上,寻址不一样,片外程序存储器工作,要用MOVC,片外数据存储器工作,要用MOVX;虽然地址都是0000H~FFFFH,不会发生冲突的。
扩展资料:
访问存储空间时,需要用到两个指针变量,为DPTR和PC。其中pc为程序计数器,指向下一条需要执行的指令的地址,DPTR为数据指针寄存器,这两个变量的长度都为16位。
这是51单片机内部结构决定的,无法改变。所以这两个指针的寻址能力都为64K。这样看来,两类存储器的扩展能力都为64K 。
软件上,寻址不一样,片外程序存储器工作,要用MOVC,
片外数据存储器工作,要用MOVX;
虽然说他们的地址都是0000H~FFFFH,不会发生冲突的本回答被提问者采纳 参考技术B
MCS-51 单片机扩展系统中,片外程序存储器和片外数据存储器共处同一个地址空间,
为什么不会发生总线冲突?
----------------------------
是共处同一个地址空间吗?
什么是“总线冲突”?
MCS-51 单片机的存储器,是哈佛结构。
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。
哈佛结构的主要特点是将程序和数据存储在不同的存储空间中。
所以,程序存储器和数据存储器,并非是共处同一地址空间。
----------------------------
80x86 是冯诺依曼结构,程序和数据,都是存放在同一个存储空间。
即使都存在一起,也没有听说有什么“总线冲突”!
什么是“总线冲突”? 没有的事!
参考技术C 单片机有一个管脚(好像是CP,忘记了),当读外ROM时置低,读外RAM时置高,以此来选通ROM或RAM,
所以不会冲突。 参考技术D 老师出这题目,就是坑骗学生的。
片外程序存储器和片外数据存储器,各有 64K 的地址。
根本就没有共处同一个地址空间。
哪会有什么总线冲突?
总线冲突,是什么意思?
这是老师自己瞎编的词,没有任何意义。
按照 51 单片机的基本理论,设计电路、编写程序,即可。
根本不用理会这些滥题。
MCS-51单片机存储地址空间划分
1.前言
MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。
- MCS-51单片机在物理结构上有四个存储空间
1、片内程序存储器(片内ROM)
2、片外程序存储器(片外ROM)
3、片内数据存储器(片内RAM)
4、片外数据存储器(片外RAM)
- 在逻辑上(即从用户的角度上)MCS-51单片机有三个存储空间
1、片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC)
2、256B的片内数据存储器(片内RAM)的地址空间(MOV)
3、以及64K片外数据存储器(片外RAM)的地址空间(MOVX)
注:在访问三个不同的逻辑空间时,应采用不同形式的指令以产生不同的存储器空间的选通信号。
2.存储空间划分
2.1 片内RAM
图 片内AM地址空间划分
地址范围是00H到7FH (52系列延伸到FFH),为8位地址,所以最大可寻址的范围为256个单元地址
- 00H到1FH
共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。
对此区域,可以使用 R0~R7 来操作,代码短捷,但是,只有一个当前工作区是可以这样读写的。
对此区域,也可以使用字节地址,来读写。
- 20H-2FH
共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。
此区域,也可按照字节寻址,来读写。
- 30H-7FH
没有什么特色,只进行字节寻址。
- 80H-FFH
共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。
(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。
注:对上述空间读写,必须使用 MOV 指令。
2.2 片外RAM
片外RAM的地址范围是0000H到FFFFH,容量即为64KB。对片外RAM读写,必须使用 MOVX 指令。
对片外RAM采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。
也就是说在寻址片外RAM时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。
2.3 ROM
ROM的地址范围是0000H到FFFFH,容量即为64KB,地址长度16位,作用是 存放程序及程序运行时所需的常数。
其中0000~0FFFH,即4K,在片内,其它在片外。
EA = 1,寻址内部ROM;EA = 0,寻址外部ROM
对ROM读出,必须使用 MOVC 指令。
3. 参考文献
[1] http://blog.163.com/asm_c/blog/static/24820311320112208130269/
以上是关于MCS-51单片机扩展系统中,片外程序存储器和片外数据存储器共处同一个地址空间,为啥不会发生总线冲突?的主要内容,如果未能解决你的问题,请参考以下文章