8051的记忆体
8051程序记忆体
在下图中画出了程序记忆体较低位址的部分,当MCS-51的CPU被重置(Reset)后,会从0000H开始执行程序.每一个中断,在程序记忆体中有一个指定的位址,当中断产生且被接受时,会使CPU跳至那个指定的位址开始执行中断副程序,例如:UART的中断位置是在0023H,如果UART被使用,则它的中断服务程序必须由0023H这个位址开始.如果这个中断未被使用,则它的服务程序之位址可作一般程序记忆体使用.
中断服务程序的位址空间都规划成8位元的长度,0003H为第0号外部中断(INT0);000BH为0号计时器(TIMER0);0013H为第1号外部中断(INT1);001BH为第1号计数器(TIMER1);0023H为串列阜(UART);002BH为第2号计数器(8052才有TIMER2).如果中断服务程序够短的话(例如用在控制的场合里就是如此),则此中断服务程序可完全放在这八个位元组里.较长的服务程序可使用跳跃指令(LJMP、AJMP),以跳过其它的中断位址空间.
程序记忆体的最低4K(在8052AH为8K)位元组,可以是芯片内部的ROM或是在外部的ROM(EPROM),其选择方式是由MCS-51的EA这支接脚加以选择;若EA=VCC为内部ROM、EA=GND则为外部ROM.在8051系列里,如果EA接在VCC上,位址0000H~0FFFH的程序是由内部ROM提供,1000H~FFFFH的程序则由外部的ROM提供.
在8052H系列里,若EA接在VCC时,则0000H~1FFFH的程序是由内部ROM提供;2000H~FFFFH由外部ROM提供.如果EA接至VSS,则所有程序都由外部ROM提供.因8031、 8032AH等内部没有ROM,因此必须将它的EA接至VSS,使他们可以直接执行外部程序.
PSEN为读取外部ROM之激发信号,它是用在所有外部程序的提取;PSEN在CPU提取内部程序时不动作.执行外部程序的硬体架构如所示.请注意共有16条I/O( P0和P2)被连接成汇流排之功能,以作为外部程序的程序记忆体的读取介面.P0被当作外部位址/资料汇流排多工;它首先当作位址汇流排,以输出程序计数器的低位元组(PCL),然后进入高阻抗状态,以等待程序记忆体输出指令码(OP Code),在程序计数器低位元组(PCL)有效的同时,ALE信号会将它锁入位址闩锁器(Address Latch)里,在这同时,位址的高位元组(PCH)也会从P2输出.最后PSEN会激发EPROM,然后指令码就被读入微处理机中.
程序记忆体的位址一定是16位元宽,就算你只使用了低于64K位元组也是如此,它是使用两个八位元的I/O埠(P0和P2)以定址外部程序记忆体.
8051资料记忆体
图中使用两个字节的地址(16bit),但此时地址的高字节由P2输出、低字节由P0输出.
内部数据存储器,如图所示,其空间被分为三块;即(1)较低地址128字节数据存储器;(2)较高128字节的数据存储器(8052才有,需使用间接寻址方式存取数据);(3)特殊功能缓存器(Special Function Register 简称SFR).内部数据存储器的地址只有一个位宽,也就是只能到256字节的空间.
7FH 30H | |||||||
20H 2FH | |||||||
18H R0 | 19H R1 | 1AH R2 | 1BH R3 | 1CH R4 | 1DH R5 | 1EH R6 | 1FH R7 |
10H R0 | 11H R1 | 12H R2 | 13H R3 | 14H R4 | 15H R5 | 16H R6 | 17H R7 |
08H R0 | 09H R1 | 0AH R2 | 0BH R3 | 0CH R4 | 0DH R5 | 0EH R6 | 0FH R7 |
00H R0 | 01H R1 | 02H R2 | 03H R3 | 04H R4 | 05H R6 | 06H R7 | 07H R7 |
评论