首先要搞清一个问题,对于51单片机扩展外部数据存储器时,才会有程序存储器和数据存储器的地址相同。其次是程序存储器在正常的工作时,是不能存储数据的,只有在编程状态下才可以写数据的,而正常工作时只能读出程序或数据,所以,才叫只读程序存储器ROM。搞清这两个问题后再解释你的问题:如果程序存储器在内部,那么单片机在取指令时自然就在内部读取,不会到外部读任何数据的,所以,与外部数据存储器无关系。如果是扩展外部程序存储器的情况下,单片机在读取指令时,(只能读不能写,即不能存储)是用PSEN(非)信号来读取ROM的。而要读/写外部数据存储器时,一是只有在执行MOVX指令时,才读/写外部数据存储器,在硬件上是用RD(非)信号读数据存储器的,用WR(非)信号写数据存储器的。因此,就算是两者的地址相同,但是读/写的信号是不同的,因此,就不会搞混的,单片机会自动区分是读什么存储器。
那就存呗。
程序存储器、数据存储器,是两个不同的存储芯片,即使地址号码相同,也没有任何关联。
他们的写入方法不同。读出指令不一样
程序存储器的AAH需要特殊方法才能写入。 读出用movc指令。
数据存储器单元的DEH用mov(内部存储器)或movx(外部扩展存储器)指令进行,可读可写。