DPL DPH 数据指针低位字节 数据指针高位字节 82H 83H 87H 88H 89H 8AH 8BH 8CH 8DH SBUF P2# IE# P3# IP# B# PSW# ACC# 串行数据缓冲器 P2锁存器 中断允许寄存器 P3锁存器 中断优先级寄存器 B寄存器 程序状态寄存器 累加器 99H A0H A8H B0H B8H B8H F0H E0H PCON 电源控制及波特率选择 TCON# TMOD TL0 TL1 TH0 TH1 定时器/计数器控制寄存器 定时方式选择寄存器 定时器/计数器0低位字节 定时器/计数器1低位字节 定时器/计数器0高位字节 定时器/计数器1高位字节 1. 特殊功能寄存器
下面简单介绍SFR块中的部分寄存器,其他SFR寄存器将在有关章节中介绍。 (1)程序计数器PC
程序计数器PC用于存放下一条要执行的指令地址,是一个16位专用寄存器,可寻址范围为0~65535(64K)。PC在物理上是独立的,不属于SFR。 (2)累加器A
累加器A是一个最常用的专用寄存器,属于SFR,也称ACC。大部分单操作数指令的操作数取自累加器,很多双操作数指令的一个操作数取自累加器,加、减、乘、除算术运算指令的运算结果都存放在累加器A或A和B寄存器中。 (3)B寄存器
在乘除指令中,用到了B寄存器。乘除指令的两个操作数分别取自A和B,其结果存放在A和B寄存器中。例如除法指令中,被除数取自A,除数取自B,商数存放于A,余数存放于B。 (4)堆栈指针SP
堆栈指针SP是一个8位专用寄存器。它指示出堆栈顶部在内部RAM块中的位置。系统复位后,SP初始化为07H,使得堆栈事实上由08H单元开始。08H~1FH单元分别属于工作寄存器组1~3,在程序设计中用到这些区,最好把SP值
改置为1FH或更大的值。MCS-51的堆栈是向上生成的,若SP=60H,CPU执行一条调用指令或响应中断后,PC进栈,PCL保护到61H,PCH保护到62H,SP=62H。 (5)数据指针DPTR
数据指针DPTR是一个16位的SFR,其高字节寄存器用DPH表示,低字节寄存器用DPL表示。DPTR可以作为一个16位的寄存器DPTR来用,也可以作为两个独立的8位寄存器DPH和DPL来用。
(6)程序状态字(PSW——Program status word)
程序状态字是一个8位的寄存器用于寄存指令执行的状态信息。其中有些位状态是根据指令执行结果,由硬件自动设置的,而有些位状态则是用软件方法设定的。PSW的位状态可以用专门的指令进行测试,也可以用指令读出。一些条件转移指令将根据PSW中有关位信息来进行程序转移。PSW的各位定义如下: 表8-3 PSW各位的定义 位 序 位标志 PSW.7 CY PSW.6 AC PSW.5 F0 PSW.4 RS1 PSW.3 RS0 PSW.2 OV PSW.1 / PSW.0 除PSW.1位保留未用外,对其余各位的定义及使用介绍如下:
① CY或C(PSW.7)——进位标志位。CY(或C)是PSW中最常用的标志位,其功能有二:一是存放算术运算的进位标志;二是在位操作中,作累加位使用。在位传送、位与、位或等操作中,都要使用进位标志位。
② AC(PSW.6)——辅助进位标志位。在加减运算中,当有低4位向高4位进位或借位时,AC由硬件置位,否则AC位被清“0”。在进行十进制数运算时需要十进制调整,此时要用到AC位状态进行判断。
③ F0(PSW.5)——用户标志位。这是一个由用户自定义的标志位,用户根据需要用软件方法置位或复位。例如用它来控制程序的转向。
④ RS1和RS0(PSW.4和PSW.3)——寄存器组选择位。它用于设定当前通用寄存器的组号。通用寄存器共有4组,其对应关系见表2.2。这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器。 ⑤ OV(PSW.2)——溢出标志位。
在带符号数的加减运算中,OV=1表示加减运算结果超出了累加器A所能表示的符号数有效范围(-128~+127),因此运算结果是错误的。
在乘法运算中,OV=1表示乘积超过255,即乘积分别在寄存器B与A中;反之,OV=0表示乘积只在A中。
在除法运算中,OV=1表示除数为0,除法不能进行;反之OV=0,表示除数不为0,除法能正常进行。
⑥ P(PSW.0)——奇偶标志位。其表明累加器A中1的个数的奇偶性,在每个指令周期由硬件根据A的内容对P位进行置位或复位,若1的个数为奇数,P=1,反之P=0。 (7)、堆栈
堆栈是一种数据结构。所谓堆栈就是只允许在其一端进行数据插入和数据删除操作的线性表。其结构如图2.4所示。
堆栈的功能
顶端 SP 栈顶 栈底 堆栈是为了子程序调用和中断操作而设立的,其作用有两个:保护断点和保护现场。
2、内部程序存储器
MCS-51单片机的程序计数器PC为16位,因此可以寻址的地址空间为64KB。8051和8751单片机内部有4KB字节ROM/EPROM程序存储器(0000H~0FFFH),1000H~FFFFH是外部扩展程序存储器地址空间。而8052单片机内部有8KB ROM程序存储器,同样可以扩展到64KB。在64KB程序存储器中,有6个地址单元具有特殊功能。 (1)程序计数器PC
MCS-51单片机在复位后PC的内容为0000H,所以系统必须从0000H开始取指令,执行程序。因为0000H是系统的启动地址,所以用户在设计程序时,一
般会在这一单元中存放一条绝对跳转指令,而主程序则从跳转到的新地址处开始存放。
(2)中断源
除0000H外,其余5个特殊功能单元分别对应6种中断源的中断服务子程序的入口地址,见表2.6。通常在程序设计时会在这些入口地址处都安放一条绝对跳转指令,而真正的中断服务子程序从转移地址开始安放。
表8-4 中断源入口地址
中断源
外部中断0 定时器0溢出中断 外部中断1 定时器1溢出中断 串行口中断
入口地址
0003H
000BH
0013H
001BH
0023H
第九讲
一、授课内容:
MCS―51单片机寻址方式 二、授课类型:讲授 三、授课时数:2学时 四、教学目标:
掌握MCS―51系列单片机的寻址方式 六、教学重、难点:
MCS―51系列单片机的寻址方式
七、教学设想:
借助产品、作品演示,一方面可以使课堂生动,另一方面可以腾出大量时间加强对重难点知识的讲解,增强学生对知识的理解,同时提高他们对本学科的兴趣. 八、教学过程:(板书) 一、 指令格式
一台计算机的指令系统是指它所有的指令集合。MCS-51的指令系统共有111条指令,由42个助记符和7种寻址方式组合而成。
指令的表示方法称为指令格式,一条指令通常由操作码和操作数两部分组成。操作码规定指令进行什么操作,采用助记符表示;而操作数表示指令的操作对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。根据指令的不同,可以有一个或多个操作数。汇编语言指令的基本形式是:
操作码助记符
在后,操作数之间用逗号分隔。
目的操作数,源操作数
操作码助记符与操作数分段书写,操作数中的目的操作数在前,源操作数
MCS-51的指令系统中,根据指令的长度有一字节、二字节和三字节三种指令。 1. 一字节指令
一字节指令只有一个字节,操作码中包含了操作数的信息。在两种情况下,其指令为一字节。
① 操作数固定,无须附加的空间来指定即可完整明确地表示出指令的功能。 例如指令“INC 码为:
DPTR”,其功能为数据指针加“1”,其指令
1010 0011
② 操作数在通用寄存器中,而寄存器编码只需3位二进制,故可以把寄存器编码与操作数“挤”在一个字节中,此时操作码占5位,操作数占3位。
例如指令“MOV 其指令码为:
A,Rn”,其功能为寄存器向累加器送数据,