比如在某一地址单元中作为程序存储器其中需要存AAH而作为数据存储器单元要存DEH如何解决?
比如有一个空水杯甲(存储地址),现有两种饮料,果汁A(程序代码),汽水B(RAM数据)我们知道这水杯的特性是只能装一种饮料,现在问题是如何既在杯中装汽水又装果汁?烦请解释一下,谢谢!
你好,很感谢你的回复,至于“对于51单片机扩展外部数据存储器时,才会有程序存储器和数据存储器的地址相同”出至于何资料?据《新编MCS-51单片机应用设计》张毅刚(第三版)哈工出版 第十九页“数据存储器与程序存储器全部64K字节地址重叠”如果在烧入程序时FF00H单元已被填入AAH,在运行时作为数据存储器要对其写入DEH该如何解决?
追答“数据存储器与程序存储器全部64K字节地址重叠”这确实不错,可你并没有再看教材是怎么继续讲述的,地址重叠那又是如何区别这两种存储区的?你后面的提问更是错误:如果在烧入程序时FF00H单元已被填入AAH,在运行时作为数据存储器要对其写入DEH该如何解决?解释:既然是烧入程序,那就是程序存储器,在运行就不可能再作为数据存储器去写入。如果是作为数据存储器的话,如果已经写入你要求的AAH,再想写入DEH的话,那就是新的数据DEH,原来的数据就没有了,不可能两个数据都保留的,这是电子,不是汽水,这是科学,不是游戏,你想怎样就怎样的。
程序存储器、数据存储器,是两个不同的存储芯片,即使地址号码相同,也没有任何关联。追问
你好感谢回答,我之前也有类似的感觉,但查不到相关的资料说明,请问出至何处?
追答程序存储器、数据存储器,是两个不同的存储芯片。
和单片机引脚 PSEN 相连的芯片,是程序存储器;
和单片机引脚 RD、WR 相连的芯片,是数据存储器。
你在书上,找找这几个引脚的功能说明,即可知道。
另外,对这两种存储器,读写的指令,也完全不同。
分别是 MOVC、MOVX。
51单片机的程序存储器、数据存储器,没有任何关联。
各自都有 0000~FFFFH 的地址范围。
----
两种存储器,是独立的,这称为哈佛结构。
51单片机的存储器,就是哈佛结构。
程序存储器的AAH需要特殊方法才能写入。 读出用movc指令。
数据存储器单元的DEH用mov(内部存储器)或movx(外部扩展存储器)指令进行,可读可写。