⑴ 51单片机中的SP是一个单独的寄存器还是属于RAM的一部分
SP是一个寄存器,是特殊寄存器中的一个,即SFR中的一个,他不属于RAM.
我简单的说一下单片机内部的内存的结构:
由四个部分组成:
1 ROM或者Flash
2 内部RAM
3 SFR
4 外部RAM
注意,很多单片机初学者,分不清内部RAM和SFR,认为他们是一个东西,其实不是,他们是完全独立的两个物理空间.
内部RAM的地址是 低部分00H--7FH 高部分80H--FFH
SFR的地址是 80H--FFH
虽然SFR和高的内部RAM地址相等,但是寻址方式不一样,所以单片机能区分得开
⑵ 为什么把pc寄存器的值设为sp操作开始的地方操作系统
指令寄存器IR,是临时放置从内存里面取得的代码数据(也就是指令),然后等待译码器来译码。指令指针寄存器ip,里面放置的是不是指令,而是一个指向下一个将要去获取的指令的内存地址(所以它是一个指针)。
sp在单片机系统复位时候才使用因为在51单片机中,SP栈指针是一个专用的8位寄存器,系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。在响应中断或子程序调用时,发生入栈操作,入栈的是16位PC值;51中有PUSH压入和POP弹出栈操作指令,如有必要,在中断或调用子程序时可用POSU指令把PSW或其它需要保护的寄存器的内容压入堆栈加以保护觉得有用点个赞吧
⑶ 单片机sp几进制
十六进制。
单片机只能识别十六进制,SP英文全称为stack,pointer,是单片机控制器的组成部件之一,与时控制逻辑电路,指令寄存器译码器,地址指针DPTR,程序计数器等部件共同组成CPU的神经中枢,堆栈指针在单片机里的作用是随时跟踪栈顶地址,以便存取单片机的数据。
⑷ 单片机中的SP设置问题
如果是51单片机的话上电后SP默认的是07h,寄存器组默认的是第一组就是00h-07h这8个单元,写程序的时候将自定义变量区设定在堆栈深度以外就可以了。
一般是将4个寄存器组单元地址预留出来。
⑸ 堆栈寄存器SP是多少位寄存器
MCS-51单片机的堆栈区只可设置在片内RAM区,复位时SP指向07H,SP是个8位的堆栈指针。
⑹ MCS-51单片机汇编语言的SP指令有什么作用
MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。
除了初始化堆栈时直接给SP赋值,SP显式存在,其它的对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中。
例如:
MOV SP,#80H ;初始堆栈指针,(SP)=80H
LCALL XXXX;调用XXXX处的子程序,下一条指令PC值压栈,(SP)=(SP)+2
NOP;子程序返回时,RET指令从堆栈中弹出PC值,所以会返回到这里,(SP)=(SP)-2
PUSH ACC;累加器A的内容压栈保存,(SP)=(SP)+1
POP B;堆栈内保存的累加器A的内容弹出到B寄存器中,(SP)=(SP)-1
使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果。
⑺ SP在单片机中是什么寄存器有什么作用
你没有说是什么单片机产品,各单片机定义不同。
如果是MCS-51单片机,SP指的是堆栈指针寄存器Stack Pointer,指示堆栈的栈顶地址,定位要入栈或出栈的数据的存放位置。
⑻ 8501单片机中,PC、A、PSW、SP分别是什么寄存器
分别是程序计数器、累加器、程序状态字(寄存器)和栈指针。
⑼ 单片机里sp是什么意思啊
单片机里sp是堆栈指针。
堆栈指针SP英文全称为stack pointer,是单片机控制器的组成部件之一,与时控制逻辑电路、指令寄存器译码器、地址指针DPTR、程序计数器等部件共同组成CPU的神经中枢。堆栈指针在单片机里的作用是随时跟踪栈顶地址,以便存取单片机的数据。
每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。
(9)单片机sp寄存器扩展阅读
由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。
一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。
不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
⑽ 什么是堆栈,51单片机堆栈指针SP的使用举例
MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。
除了初始化堆栈时直接给SP赋值,SP显式存在,其它的对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中。
例如:
MOV SP,#80H ;初始堆栈指针,(SP)=80H
LCALL XXXX;调用XXXX处的子程序,下一条指令PC值压栈,(SP)=(SP)+2
NOP;子程序返回时,RET指令从堆栈中弹出PC值,所以会返回到这里,(SP)=(SP)-2
PUSH ACC;累加器A的内容压栈保存,(SP)=(SP)+1
POP B;堆栈内保存的累加器A的内容弹出到B寄存器中,(SP)=(SP)-1
使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果。
另外
如果把30H赋给了SP,称为设置栈底。以后:
PUSH ACC ,就把ACC的内容存放到31H单元;
PUSH PSW ,就把PSW的内容存放到32H单元;
PUSH B ,就把B的内容存放到33H单元。
……
弹出时,要用POP指令。
利用堆栈,就不用管具体的内容存放在什么单元了,SP会自动管理。