
CPU中的专用寄存器(SFR).ppt
9页CPU中的专用寄存器(中的专用寄存器(SFR))一、累加器一、累加器Acc二、通用寄存器二、通用寄存器B三、程序计数器三、程序计数器PC四、堆栈指针四、堆栈指针SP五、数据指针五、数据指针DPTR六、程序状态字寄存器六、程序状态字寄存器PSW七、电源控制及波特率选择寄存器七、电源控制及波特率选择寄存器PCON 退出退出累加器累加器Accl为为8位寄存器,简称为位寄存器,简称为A字节地址:字节地址:0E0H 位地址:位地址:0E0H~0E7H用于存放用于存放操作数或运算的中间结果它通过暂存操作数或运算的中间结果它通过暂存器器TMP2与与ALU相,为相,为ALU提供一个操提供一个操作数A是是CPU中使用最频繁的寄存器中使用最频繁的寄存器l例:例:MOV A,,#6 ;;A 6l ADD A,,#7 ;;A ((A))+7l 结果:结果:(A)=13返回返回通用寄存器通用寄存器BlB是一个专为乘法和除法运算设置的是一个专为乘法和除法运算设置的8位寄存器,位寄存器,一般与累加器一般与累加器A配合使用。
字节地址:配合使用字节地址:F0H 位位地址地址::F0H~F7HB在乘法或除法前,用来存在乘法或除法前,用来存放乘数或除数,在乘法或除法完成后用来存放放乘数或除数,在乘法或除法完成后用来存放乘积的高乘积的高8位或除数的余数对于其它指出令,位或除数的余数对于其它指出令,寄存器寄存器B可用来存中间结果可用来存中间结果l例:例: MOV A,,#65H ;;A 65Hl MOV B,,#34H ;;B 34Hl MUL AB ;BA A X B=65H X 34Hl 结果结果(A)=84H (B)=14H返回返回程序计数器程序计数器PClPC是一个是一个16位的寄存器,具有自动加位的寄存器,具有自动加1功能,用来存放下一条要功能,用来存放下一条要执行的指令在程序存储器中地址,以保证程序按人们编写的顺序执行的指令在程序存储器中地址,以保证程序按人们编写的顺序执行编码范围:执行编码范围:0000H~FFFFHl当要执行一段程序时,必须预先按指令的执行顺序把程序放到当要执行一段程序时,必须预先按指令的执行顺序把程序放到ROM中,然后从第一条指令开始,取出一条执行一条,直到程序中,然后从第一条指令开始,取出一条执行一条,直到程序执行完毕。
如何保证这一顺序呢?这就必须要有一个具有自动加执行完毕如何保证这一顺序呢?这就必须要有一个具有自动加1功能的寄存器来保存当前要取出的地址,这就是功能的寄存器来保存当前要取出的地址,这就是PCl在程序开始执行之前,先将程序的起始地址(即程序的第一条指在程序开始执行之前,先将程序的起始地址(即程序的第一条指令的地址)送入令的地址)送入PC,,CPU把把PC的值作为地址,通过地址总线送的值作为地址,通过地址总线送入存储器,取出程序的第一条指令每取出一个字节入存储器,取出程序的第一条指令每取出一个字节PC自动加自动加1所以有人认为所以有人认为PC是是CPU的的“向导向导”lPC在物理结构上是独立的,不属于在物理结构上是独立的,不属于SFR区,无字节地址和位地址,区,无字节地址和位地址,但仍是具有专用功能的寄存器,所以有人认为片内但仍是具有专用功能的寄存器,所以有人认为片内SFR有有22个返回返回堆栈指针堆栈指针SPl是一个是一个8位的寄存器,用于存放堆栈的栈顶地址,即指出栈顶在内部位的寄存器,用于存放堆栈的栈顶地址,即指出栈顶在内部ROM中的位置字节地址:中的位置字节地址:81H,,无位地址。
无位地址l堆栈:是一种按堆栈:是一种按“先进后出先进后出”或或“后进先出后进先出”规律存放数据的片内规律存放数据的片内RAM区域它的一端是固定的,称为栈底,另一端是浮动的,称为栈顶它的一端是固定的,称为栈底,另一端是浮动的,称为栈顶l设置与操作:原则上,可把堆栈区安排在片内设置与操作:原则上,可把堆栈区安排在片内RAM的低的低128B的任何区域的任何区域但习惯但习惯上,上,CPU工作时至少有一组工作寄存器,所以工作时至少有一组工作寄存器,所以8051复位后,复位后,SP初初值为值为07H,,当第一个数进栈时,当第一个数进栈时,SP加一指向加一指向08H单元为了合理使用内单元为了合理使用内部部RAM,,堆栈一般不设在工作寄存器区和位寻址区,通常设在内部堆栈一般不设在工作寄存器区和位寻址区,通常设在内部RAM30H~7FH地址空间内,即设在便签区可用数据传送指令给地址空间内,即设在便签区可用数据传送指令给SP赋赋初值进行设置如:初值进行设置如:MOV SP,,#70Hl堆栈有压栈和弹栈两种操作,分别用指令堆栈有压栈和弹栈两种操作,分别用指令PUSH和和POP完成l 例:例:MOV A,,#35H ;;A 35Hl PUSH A ;;SP ((SP))+1,(,(SP)) Al作用:堆栈是为子程序调用和中断操作而设立的,其具体功能为保护断作用:堆栈是为子程序调用和中断操作而设立的,其具体功能为保护断点和保护现场。
此外,利用堆栈还可方便地进行数据交换(堆栈的妙用点和保护现场此外,利用堆栈还可方便地进行数据交换(堆栈的妙用见备注)见备注)返回返回数据指针数据指针DPTRlDPTR是个是个16位的寄存器,也可分为两个独立的位的寄存器,也可分为两个独立的8位寄位寄存器存器DPH((高高8位)和位)和DPL((低低8位),字节地址分别位),字节地址分别为为83H和和82H,,无位地址无位地址lDPTR通常在访问外部数据存储器时作地址指针用,存通常在访问外部数据存储器时作地址指针用,存放数据存储器的放数据存储器的16位地址也可存放位地址也可存放ROM的的16位地址,位地址,以实现子程序的间接调作、转移及外部数据传送和查以实现子程序的间接调作、转移及外部数据传送和查表等操作表等操作l DPTRl DPH(83H)DPL(82H)返回返回程序状态字寄存器程序状态字寄存器PSWl在程序的运行过程中,某些指令执行结束后会产生一在程序的运行过程中,某些指令执行结束后会产生一些重要的特征,这些特征必须保存下来以供后续程序些重要的特征,这些特征必须保存下来以供后续程序使用。
使用PSW就是一个用于保存指令执行后所产生的特就是一个用于保存指令执行后所产生的特征的征的8位寄存器字节地址:位寄存器字节地址:D0H,,位地址:位地址:D0H~D7HPSW的各位定义如下:的各位定义如下:l 位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位标志CYACF0RS1RS0OVF1P位地址D7HD6HD5HD4HD3HD2HD1HD0H返回返回PSW各位的定义各位的定义l进位标志进位标志CY::功能有二:功能有二:1、存放算术运算的进位标志在进行、存放算术运算的进位标志在进行加、减运算时,如操作结果使加、减运算时,如操作结果使A中最高位中最高位D7有进位或借位产生则有进位或借位产生则CY=1,,否则否则CY=0;;2、、在位操作中在位操作中CY作位累加器作位累加器C使用l辅助进位辅助进位AC::加减运算中,当加减运算中,当A中低中低4位向高位向高4位有进位或借位时位有进位或借位时AC=1,,否则否则AC=0l用户标志用户标志F0、、F1::共用户定义的标志位,由用户根据需通过传送共用户定义的标志位,由用户根据需通过传送指令将其设置为指令将其设置为0或或1,作为软件标志。
用以控制程序的转向作为软件标志用以控制程序的转向l工作寄存器区选择位工作寄存器区选择位RS1、、RS0::由用户编程设定,用以选择四组由用户编程设定,用以选择四组工作寄存器中的某一组作为当前工作寄存器工作寄存器中的某一组作为当前工作寄存器l溢出标志位溢出标志位OV::用于指示累加器用于指示累加器A在带符号数加减运算中是否发在带符号数加减运算中是否发生溢出溢出生溢出溢出OV=1,,否则否则OV=0l奇偶标志位奇偶标志位P::用于指示运算结果用于指示运算结果A中中1的个数的奇偶性若的个数的奇偶性若1的个的个数为奇数,则数为奇数,则P=1,,否则否则P=0l 返回返回电源控制及波特率选择寄存器电源控制及波特率选择寄存器PCONlPCON是一个是一个8位的专用寄存器,字节地址位的专用寄存器,字节地址87H,,无位地址用于控制无位地址用于控制CPU进入待机或节电工进入待机或节电工作方式以及串行通信的波特率是否加倍具作方式以及串行通信的波特率是否加倍具体内容以后再介绍)体内容以后再介绍)返回返回。












