程序存储器用于存放编好的程序和常数。MCS-51系列单片机片内有4KB的程序存储器(8031除外),片外用16位地址线,最多可扩展64KB程序存储器,两者是统一编址的,程序存储器的映象如图2-6所示。
图2-6 程序存储器映象
在系统设计程序存储器时应考虑以下几个方面的问题:
1)如果系统需要扩展外部存储器,它的16位地址总线应接在单片机的P0口和P2口,外部程序存储器的寻址是通过这两个8位I/O端口进行的。
2)对于有内部ROM的单片机(如8051和8052),应把引脚接高电平。正常运转时,使程序从内部ROM开始执行,当PC值超出0FFFH时,自动转到外部存储区1000 H~0FFFFH地址空间上去执行程序。对于这类芯片,若把接低电平,可用于调试状态,把调试程序放置在与内部ROM空间重叠的外部存储器内。
对于无内部ROM的芯片(如8031和80C31等)则必须外接ROM,而EA应始终接地,迫使系统从外部程序存储器取指令。
图2-7 中断存储地址分配
3)外部ROM的读选通信号为用于所有对外部程序存储器的访问,而在对内部程序存储器访问时,此信号无效。(www.daowen.com)
4)对于程序存储器可采用立即寻址和基址加变址寻址方式。
5)在程序存储器中有6个特殊的单元,其地址安排如图2-7所示。其中0000 H单元是单片机复位时的PC值,即单片机复位后系统从0000H开始执行程序。一般在该单元中存放一条绝对跳转指令,跳向主程序的入口地址。
除0000 H单元外,其他5个特殊单元分别作为5个中断源的中断服务程序的入口地址(又称中断矢量地址),见表2-2。
由图2-7可见每个中断服务程序入口地址之间间隔为8B,若中断服务程序足够短,则可以安排在这8B以内。反之若中断服务程序稍长,通常都在这些中断入口地址处放置一条跳转指令跳向相应的中断服务程序。
表2-2 各种中断服务子程序的入口地址
① 表示的第6种中断源为52子系列所特有。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。