单片机的程序存储器和数据存储器共处同一地址空间为啥不会发生总线冲突?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机的程序存储器和数据存储器共处同一地址空间为啥不会发生总线冲突?相关的知识,希望对你有一定的参考价值。

组8个单元,复位后的寄存器是第0组。能被8整除的都可以进行位寻址。EA:片内外程序存储器片选端,ALE:地址锁存使用,PSEN:片外程序存储器读允许信号,1个机器周期是12个时钟周期,1个指令周期是1、2、4个机器周期。1/10US,P0-P3,口的不同之处在与:P0口没有上拉电阻,其余的都有上拉电阻,外电路不用加上拉电阻。在作为输入口时要向端口写1,防止读入的数据错误。
2、地址相同,但是,使用的指令不同,MOVC,MOVX。P3口的第二功能很丰富:串行口RX,TX、外部中断INT0,INT1、定时记数器T0,T1、读写WR,RD。一个是位地址,一个是字节地址,采用访问的指令不同,7C在位地址寻址区的2F中,PSW记录累加器A的状态,CY,AC,OV等,具体是第7位进位或者借位时,CY=1,反之为0,第3位进位或者借位时,AC=1反之为0,当运算结果不对时,OV=1。
3、那是程序的总入口地址,中断地址入口。说白了,就是即可以输入又可以输出的口叫双向口,P0-P3:复位时,为FFH。寻址方式:直接、间接、立即、寄存器、变址、位寻址。内部低128位寻址,和整个256字节寻址。
4、DA A的作用是紧跟着加法后面的指令,用与十进制调整。MOV A,80H,XCH A,90H,MOV 80H,A。算术运算利用CY,OV判断结果是否正确。如果CY=1,说明减数小,与此同时OV=1,说明正数减去负数得负数的情况。依次类推。

以上是部分内容回答。
由于时间关系先到此吧,后续再补上!
参考技术A 单片机的程序存储器和数据存储器共处同一地址空间之所以不发生地址冲突,是因为:
1、尽管地址相同,但物理空间不一样。
2、访问指令不同,程序存储器用MOVC指令访问,数据储存器用MOVX指令访问。
参考技术B 地址相同,但物理上是分开的

访问的指令不同的,不会发生总线冲突

访问程序存储器是MOVC......

访问数据存储器是MOV........,本回答被提问者采纳
参考技术C

80x86 是冯诺依曼结构。

程序和数据,都是存放在同一个存储空间。

即使都存在一起,也没有听说有什么“总线冲突”!

----------------------------

MCS-51 单片机,是哈佛结构。

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。

所以,程序存储器和片外数据存储器,并非是共处同一地址空间。

什么是“总线冲突”? 没有的事!

参考技术D 因为所用的控制信号和指令不同,CPU对ROM的读操作由PSEN控制,指令用MOVC类;对RAM的读操作用RD控制,指令MOVX类。而且单片机对片内片外ROM访问的选择由硬件实现,当EA'=0,选择片外。

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单片机的程序存储器和数据存储器共处同一地址空间而不会发生总线冲突

MCS-51单片机扩展系统中,片外程序存储器和片外数据存储器共处同一个地址空间,为啥不会发生总线冲突?

MCS-51单片机存储地址空间划分

以ARM和RISC-V为内核的单片机写寄存器

MCS-51单片机的内部结构

玩转单片机得弄明白DMA原理