PC(Program Counter):存放下一条要执行的指令在程序存储器中的地址。PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,即地址空间为0000~0FFFFH。基本工作方式有以下几种:
(1)程序计数器自动加1 ,从而实现程序的顺序执行。
(2)执行有条件转移或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。
(3)在执行调用子程序调用或中断调用,完成下列操作:① PC的现行值保护② 将子程序入口地址或中断向量的地址送入PC。
2.2数据指针DPTR:数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。DPH 为DPTR的高八位寄存器,DPL 为DPTR的低八位寄存器。
2.3堆栈指针SP:SP为8位寄存器,用于指示栈顶单元地址。堆栈是一种数据结构,只允许在其一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。堆栈的最大特点是“后进先出”的数据操作原则。
基本操作:(1)进栈:使SP的内容增1后作数据压入操作;(2)出栈:先把栈顶的数据弹出,然后使SP的内容减1。 (先进后出)
堆栈的功用:堆栈的主要功用是保护断点和保护现场。因为计算机无论是执行中断程序还是子程序,最终要返回主程序,在转去执行中断或子程序时,要把主程序的断点保护起来,以便能正确的返回。同时,在执行中断或子程序时,可能要用到一些寄存器,需把这些寄存器的内容保护起来,即保护现场。
Ø堆栈的设置:MCS—51系列单片机的堆栈通常设置在内部RAM的30H~7FH之间。
Ø堆栈指示器SP:SP为8位寄存器,用于指示栈顶单元地址。由于SP的内容就是堆栈“栈顶”的存贮单元地址,因此可以用改变SP内容的方法来设置堆栈的初始位置。当系统复位后,SP的内容为07H,但为防止数据冲突现象发生,堆栈最好设置在内部RAM的30H~7FH单元之间,例如使(SP)=30H