以上说的都是片内的资源,这些是不够用的,在实际应用时经常需要在片外扩展RAM和ROM。
1.片外RAM的应用要点——地址区分问题
因为片外RAM是用16位地址码(0000H~0FFFFH),如图2-10所示。这时就可能出现与内部RAM地址重合的问题。解决这个问题的办法就是利用不同的指令去访问片外RAM和片内RAM。例如传送指令,访问片内RAM时用助记符MOV的操作码,访问片外RAM用MOVX操作码。换句话说,将操作码分开就行了。MCS-51系列单片机的大部分指令是和片内RAM有关,这样只要记住少量访问片外RAM的指令就行了。另外,请记住,访问片内RAM单元时地址是8位的,而访问片外RAM单元时是16位地址。
2.片外ROM的扩展问题
考虑到开发方便,价格低等优点,可选用8031单片机,但8031没有片内ROM,所以要在8031单片机芯片外再增加一个ROM芯片,称之为片外ROM。另外,当片内ROM不足时,也需要扩展片外ROM。
片外ROM的地址为0000H~0FFFFH,如图2-10所示。(www.xing528.com)
片外ROM的访问方法是,利用单片机控制引脚来进行片选。为低电平有效,即=0时,CPU寻找片外ROM,此时可有64KB片外ROM范围,地址为0000H~0FFFFH;=1时,CPU寻找片内ROM,编址为0000H~0FFFH存储空间(8051、8751型有,8031无)。当需要扩展时,外部程序存储器从1000H开始编址,这种内外存储器统一编址的方式,是为了便于程序的连续执行。PC可根据这些设置自动去寻找片外存储器的连接和访问。
读取程序存储器中的常数、表格中的数据时,通常采用“MOVC”指令。
在程序存储器中某些特定单元是留给系统使用的,用户不能占用。如0000H单元是复位入口地址。当单片机复位后,PC=0000H,CPU总是从0000H单元开始执行程序,通常在ROM的0000H~0002H单元存放一条三字节的长转移指令LJMP ADDR16,使PC指向主程序的始地址,保证程序从头开始。0003H~0002AH单元均匀分为五段,每段8个单元,0003H、000BH、00013H、001BH、0023H是5个中断源入口地址,8个单元难以存放一个完整的中断服务程序。通常从中断入口地址开始存放无条件转移指令LJMP ADDR16,以便中断响应后,通过中断入口地址再转移到中断服务程序的始地址。所以一般主程序是从002BH单元之后开始存放的,ROM空间分配如图2-12所示。
图2-12 ROM空间分配图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。