首页 理论教育单片机程序存储器-单片机基础及应用

单片机程序存储器-单片机基础及应用

【摘要】:程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。根据单片机的类型及引脚的电平,CPU可从内部也可从外部程序存储器开始执行。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。64KB程序存储器中有一些特殊的单元,在使用时应加以注意。0023H——串行口的中断服务子程序入口地址。

程序存储器程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。片内有4KB的ROM存储单元,地址为0000H~0FFFH;片外最多可扩至64KB的ROM,地址为1000H~FFFFH。单片机复位以后,PC的内容为0000H,故CPU总是从0000H单元开始执行程序。

根据单片机的类型及引脚电平,CPU可从内部也可从外部程序存储器开始执行。

1)对于内部无程序存储器的单片机(如8031),在外扩程序存储器后必须接低电平(EA=0),程序从外部程序存储器的0000H开始执行。

2)对于内部有程序存储器而外部没有扩展程序存储器的单片机,应将引脚固定接高电平=1),程序从内部程序存储器的0000H开始执行。

3)对于内部有程序存储器而外部有扩展程序存储器的单片机,若=1,则从内部程序存储器的0000H开始执行,当PC值超出内部ROM的容量时,顺序执行外部的程序(不是从外部的0000H,而是从内部程序存储器最后地址再加1的外部程序存储器的地址执行)。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。读片外ROM时,CPU从PC中取出当前ROM的16位地址,分别由P0口(低8位)和P2口(高8位)同时输出,当ALE信号有效时,由地址锁存器锁存低8位地址信号,地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到片外ROM 16位地址输入端;当信号有效时,片外ROM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。

64KB程序存储器中有一些特殊的单元,在使用时应加以注意。

1)0000H~0002H:MCS-51单片机复位后,PC指向0000H单元,CPU从该单元开始执行程序。如果主程序不是从0000H单元开始的,则应在这3个单元中存放一条无条件转移指令,使CPU转去执行用户指定的程序。

2)0003H~002AH:这40个单元被均匀地分为5段,每段占有8个单元,分别作为5个中断源的中断地址区,具体划分见表2-2。

表2-2 保存的存储单元

(www.chuimin.cn)

中断响应后,系统能按中断类型自动转到各中断区的首地址去执行程序。例如,当外部中断0引脚(P3.2)有效时,即引起中断申请,CPU响应中断后自动将地址0003H装入PC,程序就转到0003H单元开始执行。因此,在中断地址区0003H~000AH中本应存放外部中断0的中断服务程序。但通常情况下,8个单元难以存放一个完整的中断服务程序,因而一般在0003H~000AH存放一条无条件转移指令,将程序转移到真正存放中断服务程序的地址空间去执行。因此,这些中断地址区的首地址也称为中断入口地址,其对应关系如下:

0003H——外部中断0的中断服务子程序入口地址。

000BH——定时/计数器0的中断服务子程序入口地址。

0013H——外部中断1的中断服务子程序入口地址。

001BH——定时/计数器1的中断服务子程序入口地址。

0023H——串行口的中断服务子程序入口地址。

002BH——定时器2的中断服务子程序入口地址(52子系列单片机)。

中断入口地址使用说明