本文主要是介绍程序存储器编址及程序执行顺序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于内部有ROM的芯片,根据情况也可以扩展外部ROM,虽然内、外程序存储器总容量可以超过64KB,但其有效存储空间只有64KB,内、外程序存储器逻辑上将共用64K存储空间。片内程序存储器地址空间和片外程序存储器的低地址空间重叠。51子系列重叠区域为0000H~0FFFH,52子系列重叠区域为0000H~1FFFH。
单片机在执行指令时,对于低地址部分,是从片内程序存储器取指令,还是从片外存储器取指令,是根据单片机芯片上的片外程序存储器选用引脚EA电平的高低来决定的。单片机复位后,如EA为低电平,则从片外程序存储器开始取指令并执行;EA接高电平,则从片内程序存储器取指令执行。对于8031和8032芯片,EA只能保持低电平,指令只能从片外程序存储器取得。
当单片机上电复位后EA为1时,程序从片内程序存储器0000H单元开始执行。当执行到最后的内部ROM单元后,转到下一个拥有相邻地址的外部ROM单元中执行,而不是从外部ROM单元的0000H处开始执行。如8051有4K内部ROM,地址空间0000H到0FFFH。如果内部程序执行到0FFFH后,下面将从外部ROM的1000H处取指令继续执行,尽管外部扩展的ROM可能地址空间是000H~FFFFH。要注意的是,在内部用到最高位地址进行无缝连接而不是重合。当单片机上电复位后EA为1时,则程序将从片外程序存储器0000H处开始执行,在任何时刻都不会执行到内部程序存储器中。
这篇关于程序存储器编址及程序执行顺序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!