
如果把存储器看成一个宾馆,每个存储单元就是宾馆的房间,而每个房间要有房间号,这样客人要求服务时,服务员才不至于走错房间。存储单元的房间号就是地址,它是存储单元的标识信息。

内部RAM中的80H~FFH单元含有21个特殊功能寄存器(SFR)。尽管21个SFR的物理位置属于内部RAM,但一般的教材说到内部RAM的容量时并不包含80H~FFH,因为在微机原理中,SFR属于微处理器。
1.工作寄存器区
寄存器常用于存放操作数和中间结果。提到“寄存”这两个字时,有人可能会想到超市的“寄存密码箱”,寄存器的作用类似寄存密码箱,它将不用的数据暂时存放。表2-3所示的片内RAM工作寄存器的地址为00H~1FH,分4组,组号依次为0,1,2,3,每组有8个单元,各组都可用R0~R7作为单元的编号。这4组不是同时有效,可以相互切换,由PSW中的RS0、RS1决定,选中的一组称当前寄存器组。为什么要把内部RAM的最低地址部分留给工作寄存器呢?因为它为微处理器提供了就近存取的便利,有利于提高单片机的处理速度,因此,在51单片机指令中使用工作寄存器的情况特别多,且多为单字节指令,执行速度最快。

2.位寻址区
51单片机中的微处理器有别于其他微处理器的一个特点是它可以进行位操作。表2-4所示的内部RAM的20H~2FH共16个字节单元为位寻址区。其中每个字节的8位都分别编址,位地址范围为00H~7FH。该区域的16个单元可以像普通RAM单元一样进行字节操作,也可以用位操作指令对单独的位进行操作。
注意,位寻址不要和字节寻址混淆。字节寻址的操作数是一个字节,而位寻址的操作数是字节中的一位。

特殊功能寄存器(SFR)可分为5类:
(1)与运算器相关的寄存器
1)累加器ACC,又可记作A,8位,用于向ALU提供操作数,许多运算的结果也存放
加器中。
2)寄存器B,8位,主要用于乘、除法运算。也可以作为RAM的一个单元使用。它的
是:
① 可作为一般数据寄存器暂存数据。
② 乘法运算时,B中存放乘数;乘积结果高8位存放于B中。
③ 除法运算时,B中存放除数;相除的余数存放于B中。
3)程序状态字寄存器(PSW),其各位含义见表2-6。

① P:奇偶标志位。当A中1的个数为偶数时,P为0;当A中1的个数为奇数时,P为1。
② OV:溢出标志位。当运算结果超出带符号数的范围时,OV为1;当运算结果没有超出带符号数的范围时,OV为0。
③ RS0、RS1:寄存器选择位。见工作寄存器区。
④ AC:辅助进位标志位。当D3向D4无进位/借位时,AC为0;当D3向D4有进位/借位时,AC为1。
⑤ CY:进位标志位。当最高位无进位/借位时,CY为0;当最高位有进位/借位时,CY为1。
以下详细讨论一下CY和OV位,两者的现象和本质见表2-7。

【例2-1】 64H+64H后,CY和OV各是多少?
解:64H所表示的无符号数和有符号数见表2-8。

64H+64H的运算过程如图2-11所示。

因此,64H+64H后CY和OV的结果见表2-9。

【例2-2】 ABH+FFH后,CY和OV各是多少?
解:ABH和FFH所表示的无符号数和有符号数见表2-10。

因此,ABH+FFH后CY和OV的结果见表2-11。

【例2-3】 9AH +E3H后,CY和OV各是多少?
解:9AH和E3H所表示的无符号数和有符号数见表2-12所示

因此,9AH +E3H后CY和OV的结果见表2-13。

上述3个例子说明CY和OV有4种组合情况:CY=0和OV=0(运算正确情况);CY=1和OV=0; CY=0和OV=1;CY=1和OV=1。
【例2-4】 设程序执行前RS1、RS0=00,F0=0,求机器执行如下程序后:
MOV A,#0AH
ADD A,#0F7H
PSW中各位的状态是什么?
解:0AH+0F7H的指令执行过程如图2-12所示。

CY为最高位进位,CY=1;CS为次高位进位,CS=1。F0、RS0、RS1不受算术运算影响; CY=1;A3向A4有进位,故AC=1;A中1的个数为奇数,故P=1;OV=CY+CS=1+1=0。所以PSW为 11000001B。
(2)指针类寄存器
1)堆栈指针(SP),专门用来存放堆栈的栈顶地址的8位寄存器,能自动加1或减1。它总是指向栈顶。
堆栈是一个按特定顺序(后进先出或先进后出)存放临时数据的存储区,位于片内RAM中。
① 当堆栈中无数据时,栈顶和栈底重合,SP指向栈底,当有数据压入堆栈时,SP指向栈顶。
② 51系列单片机中堆栈工作方式是由低向高堆放的,属向上增长型,如图2-13所示。51单片机栈顶的变化见表2-14。

③ 堆栈地址:片内RAM中的30H~7FH。
需要说明的是,设置SP初值时要考虑其允许深度,由于堆栈的占用,会减少内部RAM的可利用单元,如果设置不当,可能引起内部RAM单元冲突。堆栈的开辟要处理好如下因素:工作寄存器使用组数;中断及子程序嵌套深度;位单元与字节单元数量,以及利用堆栈保护单元的数量与是否利用堆栈传递数据等。
堆栈开辟原则为:在确保子程序与中断调用正常执行的前提下,减少堆栈分配的盲目性,缩小预留区间;统筹协调好工作寄存器、位单元和字节单元的使用;堆栈区间有一定的弹性,预防意外透支;字节单元区间相对集中、连续,内存空间清晰。

分页 2)数据指针(DPTR),16位。其用来存放16位的地址。
有关;DPTR的输出,则与ALE、
及
相联系。

用指令编写程序时,不仅应搞清指令系统中每条指令的功能,还应弄清特殊功能寄存器与接口模块或功能部件之间的对应关系。
要理解51单片机的工作,就必须对特殊功能寄存器的工作有清楚的了解。由于这些SFR的作用,引脚在程序控制下,可有第二功能,从而使得有限的引脚能衍生出更多的功能。而且,利用SFR可完成对定时器、串行口、中断逻辑的控制,这就使得单片机可以把定时/计数器、串行口、中断逻辑等集成在一个芯片上。所以说,SFR使仅具有40条引脚的单片机系统的功能有很大的扩展。
2.3.3 片内ROM
引脚为访问内部或外部ROM的选择端。接高电平时,微处理器将首先访问内ROM,当指令地址超过0FFFH时,自动转向片外ROM去取指令;接低电平时(接地),微处理器只能访问外部ROM。对于80C31单片机来说,由于其内部无ROM,只能
接地。
1.片外RAM
片外RAM容量最多为64KB,地址范围为0000H~FFFFH,与片内RAM地址范围00H~FFH重叠,因此访问内外不同的RAM空间需要不同的指令,访问片内RAM用MOV指令,访问片外RAM用MOVX指令,这又验证了硬件决定软件的事实。
2.片外ROM
片外ROM容量最多为64KB,地址范围为0000H~FFFFH,与片内ROM地址范围0000H~0FFFH重叠,但同一时刻某一地址单元只能对应唯一的ROM地址,或为片外,或为片内,因此ROM的传送指令只有MOVC。
关于存储器扩展问题的详细说明见第8章。
ICP经营许可证:鄂B2-20080078
(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号
© 2002-2025 武汉制信科技有限公司 版权所有
投诉举报电话:027-87592219