访问高端ram区使用哪种寻址方式

首页 > 实用技巧 > 作者:YD1662024-01-18 04:46:18

:片外程序存储器读选通信号输出端,也称片外取指信号输出端,该信号在每个机器周期内两次有效。当访问外部程序存储器时,此脚输出低电平选通信号。8位或16位地址数据将出现在P0和P2端口上,外部程序存储器则把指令数据放到P0端口上,由CPU读入并执行。

EA/VPP:片外程序存储器的选用端,该引脚EA为低电平,则读取外部程序存储器指令。当EA为高电平并且程序地址小于4KB时,读取内部程序存储器指令,而超过4KB地址则读取外部指令。对内部无程序存储器的8031芯片,EA保持接地。另外,在对单片机内部EPROM进行编程时,EA/VPP引脚还要加上12V的编程电压。

2.1.2 CPU

MCS-51单片机的CPU由运算器和控制器构成,是单片机的核心部分。它的组成和工作原理与多数CPU有相似之处,具体介绍如下。

1.运算器

运算器以算术逻辑单元(ALU)为核心,包括累加器(A)、寄存器(B)、暂存寄存器、程序状态字寄存器(PSW)等部件。它的功能是完成算术和逻辑运算、位变量处理和数据传送等操作。

(1)算术逻辑单元由加法器和其他逻辑电路(如移位电路、控制门电路等)组成。它不仅能完成8位二进制数的加、减、乘、除、加1、减1及BCD加法的十进制调整等算术运算,还能对8位变量进行与、或、异或、循环移位、求补、清零等逻辑运算,并具有数据传送、程序转移以及位处理(布尔操作)等功能。

(2)累加器是一个8位寄存器,是CPU中使用最频繁的寄存器。通过暂存器与ALU相连,向ALU提供操作数并存放运算结果。

(3)寄存器是为ALU进行乘、除法运算而设置的,在乘、除法运算时用来存放一个操作数,也用来存放运算后的一部分结果,不进行乘、除法运算时,还可作为通用寄存器使用。

(4)暂存寄存器暂时存储数据总线或其他寄存器送来的操作数,作为ALU的数据源,向ALU提供操作数。

(5)程序状态字寄存器是一个8位的特殊寄存器,它保存ALU运算结果的特征和处理状态,以供程序查询和判别。其中各位状态信息通常是指令执行过程中自动形成的,也可以由用户根据需要加以改变。PSW各位见表2-3。

表2-3 PSW各位

访问高端ram区使用哪种寻址方式,(13)

① CY(PSW.7):进位标志。无符号数运算中,当加法或减法运算最高位有进位或借位时,CY=1;进行加法或减法运算时,最高位无进位或借位,CY=0。CY主要用在多字节的加减法运算中,CY可以写成C。

② AC(PSW.6):辅助进位标志。无符号数运算中,进行加法或减法运算时,低4位向高4位有进位或借位,AC=1;低4位向高4位无进位或借位,AC=0。AC常作为计算机进行BCD码修正的判断依据。

③ F0(PSW.5):用户标志位,无特别意义,供用户自定义。通过软件置位或清0,并根据F0=1或0来反映系统某一种工作状态,决定程序的执行方式。

④ RS1、RS0(PSW.4、PSW.3):工作寄存器组选择位,可用软件置位或清0,用于选定当前使用的4个工作寄存器组中的某一组,具体对应关系见表2-4。

表2-4 RS1、RS0取值与工作寄存器组(R0~R7)的对应关系

访问高端ram区使用哪种寻址方式,(14)

⑤ OV(PSW.2):溢出标志位,主要用于有符号数运算,运算结果超出范围时,OV=1;否则,OV=0。如为8位运算,结果超过了8位补码所能表示的范围时,OV=1。

⑥ P(PSW.0):奇偶标志位。在执行指令后,单片机根据累加器的8位二进制数中“1”的个数的奇偶,自动给该标志置位或清0。若累加器的8位二进制数中“1”的个数为奇数,则P=1;若累加器A中“1”的个数为偶数,则P=0。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。

2.控制器

控制器由程序计数器、指令寄存器、指令译码器、数据地址指针(DPTR)、堆栈指针等组成。其功能是对来自程序存储器中的指令进行译码,通过定时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的功能。

1)程序计数器(Program Counter, PC)

PC是一个16位的专用寄存器,并具有自动加1的功能。当CPU要取指令时,PC的内容送到地址总线上,从而指向程序存储器中存放当前指令的单元地址,以便从程序存储器中取出指令,加以分析、执行。同时PC自动加1,指向下一条指令,以保证程序按顺序执行。也可以通过控制转移指令改变PC的值,实现程序的转移。

2)指令寄存器(Instruction Register, IR)

指令寄存器是一个8位寄存器,用于暂存待执行的指令,等待译码。指令译码电路是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需要的电信号,再经定时控制电路定时产生执行该指令所需要的各种控制信号。

3)指令译码器(Instruction Decoder, ID)

指令译码器将指令寄存器中的指令进行译码,产生一定序列的控制信号,完成指令所规定的操作。

4)数据地址指针(DPTR)

数据地址指针(DPTR)是一个16位的专用地址指针寄存器,它由DPH和DPL这两个特殊功能寄存器组成。DPH是DPTR的高8位,DPL是DPTR的低8位。

DPTR用于存放16位地址,可对外部数据存储器RAM 64KB(0000H~0FFFFH)地址空间寻址。

5)堆栈指针(Stack Pointer, SP)

在计算机或单片机中处理子程序调用和中断操作等问题时,通常需要保存返回地址和保护现场信息。在MCS-51单片机中,堆栈用来保存返回地址和保护现场信息,堆栈是在RAM中专门开辟的一个特殊的存储区。堆栈区域的位置就由堆栈指针指定。堆栈的访问原则是先进后出、后进先出,即先进入堆栈的数据后移出堆栈,后进入堆栈的数据先移出堆栈。堆栈一端的地址是固定的,称为栈底;另一端的地址是动态变化的,称为栈顶。堆栈有两种操作方式:数据进栈和数据出栈。进栈和出栈都在栈顶进行。

堆栈主要用来暂时存放数据,有两种情况:一种是CPU自动使用堆栈,当调用子程序或响应中断、处理中断服务程序时,CPU自动将返回地址存放到堆栈中,通过堆栈传递参数。另一种是程序员使用堆栈,用堆栈暂时存放数据。堆栈指针中为栈顶的地址,即指向栈顶。堆栈指针具有自动加1、自动减1功能,当数据进栈时,先自动加1,然后CPU将数据存入;当数据出栈时,CPU先将数据送出,然后自动减1。

2.1.3 存储器

Intel公司的MCS-51单片机的存储器体系采用哈佛结构。在MCS-51单片机中,不仅在片内预留了一定容量的程序存储器、数据存储器以及众多的特殊功能寄存器(SFR),而且还具备外部存储器扩展功能,程序存储器和数据存储器的最大寻址空间均可达64KB,寻址和操作简单方便,其存储器结构如图2-5所示。

访问高端ram区使用哪种寻址方式,(15)

图2-5 MCS-51单片机存储器结构

由图2-5可见,MCS-51单片机的存储器在物理上设有四个空间,即内部程序存储器、外部程序存储器、内部数据存储器和外部数据存储器。但由于内、外部程序存储器统一寻址,事实上只有3个逻辑空间,即内、外部统一寻址的64KB程序存储器地址空间、内部256B数据存储器地址空间和外部64KB的数据存储器地址空间,通过指令区分访问内部数据存储器还是外部数据存储器。在访问这3个逻辑空间时,应分别采用不同形式的指令,如MOVC(访问程序存储器)、MOV(访问内部数据存储器)和MOVX(访问外部数据存储器)等。内部数据存储器空间在物理上又包含两部分:对于51子系列单片机(如8031),从00H~7FH共128字节是真正的内部RAM空间,而80H~FFH仅其中20余字节用作特殊功能寄存器(SFR)空间,访问其他字节是无意义的;对于52子系列的单片机(如8032或8052),00H~7FH的含义与51子系列相同,而80H~FFH是内部数据存储器高端地址和特殊功能寄存器(SFR)端口地址的重叠区域。

1.程序存储器

程序存储器(Program Memory)主要用于存放应用程序、表格和常数。由于MCS-51单片机采用16位的程序计数器和16位的地址总线,因而程序存储器可扩展的地址空间为64KB,并且这64KB地址在空间分布范围上是连续和统一的。

单片机应用系统中的程序存储器一般采用半导体只读存储器,即ROM。这种存储器在计算机运行时只能对其执行读操作,即使整机掉电后存于其中的信息也不会丢失,显然适合于存放用户程序、常数和表格等。

MCS-51单片机的程序存储器为固定的只读存储器(ROM)。如8051中含有4KB容量的掩膜ROM,8751中含有4KB容量的EPROM,89C51中含有4KB容量的FlashROM。而8031/8032中不设程序存储器,使用过程中必须外扩ROM。

MCS-51单片机的整个程序存储器可以分为内部和外部两部分,CPU访问外部ROM时,PSEN引脚上产生选通信号。CPU读取内/外部的指令由EA引脚所接的电平决定。

(1)当EA引脚接高电平时,CPU可访问内部和外部ROM,并且程序自内部ROM开始执行,PC值超出内部ROM容量时,会自动转向外部ROM中的程序。

(2)当EA引脚接低电平时,总是寻址外部ROM,且从0000H开始编址,系统全部执行外部ROM中的程序。

所以,内部集成了ROM的8051/8751/89C51等单片机正常运行时,EA引脚应接高电平;而内部无ROM的8031/8032等单片机,外部必须扩展足够容量的专用ROM器件,且EA引脚必须接低电平,以迫使单片机运行时只能从外部ROM读取指令。

2.内部数据存储器

MCS-51单片机的内部数据存储器是最灵活的地址空间,由于集成在芯片内部,因此存取速度快、效率高,但数量少,常用于存放运算的中间结果、数据缓冲以及设置特征标志等。内部数据存储器在物理上分为两个不同的功能区,如图2-6所示。

(1)内部数据区:对51子系列(如8031/8051/AT89C51等)为该地址空间的低128B(00H~7FH),对52子系列(如8032/8052/AT89C52等)为全部256B的存储空间(00H~FFH)。内部数据访问与存储使用指令MOV。以AT89C51为例,内部RAM地址00H~1FH分配给R0~R7寄存器组,具体地址分配见表2-5;内部RAM地址20H~2FH的位地址对应关系见表2-6。

(2)特殊功能寄存器(Special Function Register, SFR)区:地址空间的高128字节(80H~FFH)。对于52子系列,高128字节RAM区与SFR区是重叠的,访问时要通过不同的寻址方式加以区别,即访问高128字节RAM区时使用间接寻址方式,而访问SFR区时,则应使用直接寻址方式。对于51子系列,高128字节RAM区仅为SFR区。8051和8052系列单片机的主要特殊功能寄存器符号与含义见表2-7。

访问高端ram区使用哪种寻址方式,(16)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.