首先肯定卷子答案没有错,你想,一个自考卷子要是错了,那学自考还有什么价值了。再说原因:这个答案只对MCS-51单片机是对的,再准确一点说是对8031单片机是对的。好了,说正题,8031单片机需要外配程序存储器,当访问外部程序存储器时,存储器的地址是由PC给出的,而需要从P0口输出低8位,从P2口输出高8位,确实一点没有错。原因是你的理解不全面,只考虑了在访问外部数据存储器的情况了。对于8031,不论是访问外部的程序存储器还是外部的数据存储器,都是同样的由P0口输出低8位地址,由P2口输出8位地址。这就是重要的系统的三总线中的地址总线,其余是数据总线,控制总线。同理,不论是访问外部程序存储器还是外部数据存储器,数据总线都是用P0口,所以,P0口复用的,即是低8位地址线,也是8位数据线。
访问外部程序存储器,有两种情况:
取指令代码时:
PC的低8位由P0口输出,PC的高8位由P2口输出。
--
执行查表指令 MOVC A, @A+DPTR 时:
A+DPTR的低8位由P0口输出,A+DPTR的高8位由P2口输出。
执行查表指令 MOVC A, @A+PC 时:
和上面雷同。
------
访问外部数据存储器时:
DPTR的低8位(DPL)地址由P0口输出,DPTR的高8位(DPH)地址由P2口输出。
DPTR是指令,PC是指针,她们多需要地址,外部程序存储器是16位地址,所以都是对的,不只是这2个,还有其他的涉及外部地址的都是P0和P2一起发送地址的
DPTR是数据指针
PC是程序指针
程序指针不能直接修改,数据指针则可以!
无论是访问外部数据还是程序都是通过p0口低8位,p2口高8位的寻址方式实现的。
答案没问题,PC是程序计数器,所以P2P0输出的是一个地址,而DPTR寄存器既可以用作外部数据寄存器,也可用作外部程序寄存器