不过,借助分页技术,51单片机能很容易地实现超过64kB的程序空间,例如Keil默认支持的分页就能实现最大 64 kB × 256 Pages = 16 MB 的外部程序存储器。
答:在设计片外程序存储器之前,首先要决定EA引脚的电平。EA=0,单片机只访问外部程序存储器,对于8031单片机此引脚必须接地.EA=1,单片机访问内部程序存储器,对于内部有程序存储器的8XX51单片机,此引脚应接高电平,但若地址值超过4KB范围,单片机将自动访问外部程序存储器。
设定好EA后,单片机自动按程序所设定的次序执行。
在编程中不需要专门的语句指定调用的是外部程序存储器。比如设定EA接高电平,则程序在执行完片内的程序存储器指令后自动转入片外程序存储器,而无需特殊命令。这就是所谓的程序存储器是片内外统一编址,而数据存储器则用Mov和Movx分别对待的。
但楼主要知道程序在读取片外指令代码时的过程:先寻址,再取数。单片机会根据PC的值先给P2和p0送一个选通地址(PC的值),接下来从片外程序存储器读取代码。因为PC的值一般是连续的,这就要求片外的程序存储器空间要连续分布,这和数据存储器不同。如果不连续分布,就要用特殊的行号改变PC的值,使它和片外程序存储器分布能够对应。
单片机的系统扩展主要有程序存储器(ROM)扩展,数据存储器(RAM)扩展以及I/O口的扩展。
外扩的程序存储器与单片机内部的程序存储器统一编址,采用相同的指令,常用芯片有EPROM和EEPROM,扩展时P0口分时地作为数据线和低位地址线,需要锁存器芯片,控制线主要有ALE、。
扩展的数据存储器RAM和单片机内部RAM在逻辑上是分开的,二者分别编址,使用不同的数据传送指令。常用的芯片有SRAM和DRAM以及锁存器芯片,控制线主要采用ALE、、。
常用的可编程I/O芯片有8255和8155。用8255扩展并行I/O口时需要锁存器,8155则不用。对扩展I/O口的寻址采用与外部RAM相同的指令,因此在设计电路时要注意合理分配地址。8255和8155的工作方式是通过对命令控制字的编程来实现的,在使用时首先要有初始化程序。
MCS-51单片机有很强的扩展功能,外围扩展电路、扩展芯片和扩展方法都非常典型、规范。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)