单片机中的SP设置问题

作者&投稿:仍刮 (若有异议请与网页底部的电邮联系)
单片机的小问题,关于sp的值~

答:
PUSH POP 这类指令的执行过程举例:
PUSH ACC
把ACC的值推进堆栈SP,然后SP的值加一,指向下一个地址;
POP ACC
把SP的值推进ACC,然后SP的值减一,指向前一个地址;
阁下注意执行的过程和先后次序。

DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,
POP DPH ;把SP里的数据赋给DPH,然后SP减一,Sp地址32H,存放的是3cH,所以DPH是3CH
POP DPL ;把SP里的数据赋给DPH,然后SP减一,Sp地址31H,存放的是5FH,所以DPL是5FH

POP SP ;这句:当前SP的地址已变成30H,30H里存放50H,把50H这个数赋给Sp后,SP变成50H,然后Sp要减一,50H减一是4FH,所以SP就变成4FH。

答:DPH=3CH , DPL=5FH , SP=4FH

阁下要搞清的是Sp加一减一的次序。

此题纯粹为搞清堆栈概念而用,现实中用此编程,只会引起混乱。

设置SP的值,这与中断无关。对于51单片机,开机后默认的SP的值是07H,这个区域是不能做堆栈区的,必须要移到内部RAM的128字节的高地址区。只要是写程序,就必须先给SP指针先重新赋值,移动指针。不管有无中断都必须这么做,所以,与中断无关。
当然了,这是用汇编语言写程序时,需要用户来完成这个操作。如果是用C语言写程序,用户不必关心这个问题了。

如果是51单片机的话上电后SP默认的是07h,寄存器组默认的是第一组就是00h-07h这8个单元,写程序的时候将自定义变量区设定在堆栈深度以外就可以了。

一般是将4个寄存器组单元地址预留出来。

这个程序规模很小,寄存器只是使用了一个区。
这样的话,就没有必要更改SP,使用其默认值07H,不会影响整个程序的工作。

SP默认值是在工作寄存器里面,不设置的话,有冲突

51单片机上电复位以后,SP自动指向5fh,所以你后面如果用了SP,指针会自动加一的.如果你不用堆栈的话,可以不用设置,起码我是这样认为的

程序对吗?


OLYMPUS SP800UZ 如何设置才能拍摄出效果较满意的夜景照片?
加三角架。。。保持ISO最低。。。这是最好的办法。因为曝光只和三个数值有关。。。快门速度。光圈大小、ISO(感光度)。但是数码相机的镜头不可换。所以光圈只能那么大。而且拍路灯是光圈越小越好。。。一个是能出现星芒效果。也就是有发射型的光线。二是能尽量减少晚上拍路灯雾化不清楚的感觉。。。

Sp快捷键(sp快捷键转灯光)
SP主菜单栏点击第一个按钮(文件)向下有一个导出贴图的,快捷键:ctrl+shift+E,导出后会弹出一个文件夹,里面就是你模型的贴图了,不同的设置导出的贴图都不一样,一般默认导出就好了sp快捷键转灯光开机灯就闪一下,或者完全没有反应,在电池有电的情况,可以认为是电路上的保护电阻烧毁了。一般都是在充电的时候玩机...

调节阀pv值\\sp值是什么意思
我有更好的答案推荐于2017-12-15 14:49:42 最佳答案 SP是设定值\/给定值,PV是测量值。这两个值比较,得出偏差,产生执行机构的相应动作。 本回答由提问者推荐 举报| 答案纠错 | 评论 6 2 东郭仙人 采纳率:21% 来自团队:自动化 擅长: 工程技术科学 硬件 其他社会话题 ...

【紧急】奥林巴斯SP800UZ怎么调光圈,快门,感光度,焦距?如何设置参数...
1,如何调整光圈,快门,感光度,变焦,是说明书上写的很清楚的。新买个机器什么都不会还不看说明书,那就请用全自动吧。2,先看说明书,看过了你就能玩转一半了。剩下的就是积累经验和学习,可以找些专业书,也可以和朋友研习。3,焦距不需要再屏幕上显示,镜头上有刻度。

手机出现SP符号是什么意思?
五名团员都是加拿大的法国后裔。[2] SP = Skill Point,技能点。一些大型3D网游的SP用来决定人物能力状态,拥有足够于释放对应技能的SP,才能够使用该技能(拥有足够于学习该技能的SP点数,才能够学习该技能,如:DNF中的SP点)。与其相关的词汇还有HP(生命值)、MP(魔法值)。[3] SP=Spell ...

奥林巴斯SP-610UZ 如何调节光圈值和快门速度
艳阳十六阴天八 多云十一日暮四 阴云压顶五点六 雨天落雪同日暮 室内球场二秒足 客厅戏台快门八 1.阳光十六法则 对于风景摄影而言,过分依靠相机的测光结果往往不能得到最佳的拍摄效果。比如场景中存在大面积暗色景物时,相机的测光系统会增加曝光量,得到的照片效果呈现过曝的效果,天空变成惨白一片,没有...

关于上胶卷的问题 我是宾得sp
宾得SP是一款135相机,安装胶卷程序为:装相机镜头向下后盖向上并打开后盖。装135胶卷装入相机左边的片槽,胶卷的片头向右拉并插入右侧卷片轴的缝隙中,这时轻轻扳动把手一、二次直到看见左边胶卷向右输送了就可以关闭相机后盖。继续扳把手并按快门直到计数器出现1就可以正式拍摄了。就这样扳一下拍一张到...

相机内存照片如何移动到sD卡上(sP一600uZ),谢谢!
楼主你好!用数据线接到电脑上就可以在相机里有一个存储路径的设置你可以把它设为sd卡这样你拍的照片就可以直接存储到sd卡上了。如果已经存到相机里可以用usb连到电脑上再考到电脑上就可以了。如果想考到sd卡上可以1、先考到电脑上再把sd卡连接到电脑上(需要读卡器)把照片考到卡上。2、直接用相机...

数片机或数粒机的使用方法是怎样的
使数粒盘中的胶囊易于进入数粒孔中,同时用刷子刷动胶囊,使数粒孔中都有胶囊。3.装瓶时,将瓶放到胶囊出料口,用手指或瓶口轻轻碰触微动开关,数粒盘转动至胶囊全部落入下料口,然后立即放开微动开关。4. 进入下一次的计数工作,用刷子刷动胶囊……参考长沙益宏药机的SP-100单盘数片机。

万能摇控器RM-230SP设置
万能遥控器RM-230SP,是款 用于DVD使用的万能遥控器,用万能遥控器控制,不同的DVD机型不同,就有一些特殊功能可能用不了,属于正常的,只要常规功能可以使用就行。使用操作不难,很容易学会,设置方法:1、打开DVD机放入DVD碟片,(注:如DVD机开启后处于自动播放的状态,请先手动按DVD机的"暂停"键使...

云县13319801445: 80C51单片机中,设置堆栈指针SP为37H后就发生了子程序调用,这时SP的值变为() -
邵毕开林: 39H,调用子程序前先将当前程序地址PC压入堆栈,先低位后高位,PC占2字节,从38H压入

云县13319801445: 单片机中,设置堆栈指针SP为57H后发生子程序返回,这时SP变为( ). -
邵毕开林: 是55h.因为单片机中,在进入子程序时,会先将子程序后的PC地址先压入堆栈保存(2字节),若在子程序退出时,会自动将进入时保存的PC值出栈恢复(两个字节).所以当SP=57h时子程序返回(即退出子程序),因PC值出栈恢复,故SP=57h-2=55h;

云县13319801445: 为什么单片机复位后SP的值写为60H(应该说30 - 7F都是可以的啊) -
邵毕开林: 单片机复位后SP的值一般要用一条指令赋值为60H,这只是个别人写程序的爱好与习惯罢了,没有任何规定必须是赋值60H,更没有任何原因必须选60H. 就单片机复位后,SP=07H,不用重新赋值也是可以的,否则,为什么当初设计者会这么设计呢.由于51单片机的堆栈是向上增长的,所以,为了避免堆栈区与用户数据区互相影响,才将SP设置在60H以后,比较合理的是赋值为6FH,这样堆栈区可用70H~7FH,预留有16个单元足够,也不浪费.

云县13319801445: 单片机在设计程序时,有时为什么要对SP赋值? -
邵毕开林: 设置sp值是为了,定栈顶元素sp本来的地址为81H,81H内储存的值就是栈顶元素,控制sp的指令主要有PUSH和POP.至于为什么要赋值,就要看具体的才知道了...

云县13319801445: AVR单片机的堆栈指针SP初值是什么 -
邵毕开林: 看你用的晶片的SRAM的大小了,以M16晶片1KB的SRAM为例最大初值就是$045F,最小好像是$0060. 系统复位后,SP初值为07H,实际应用中通常根据需要在主程序开始处对堆栈指针SP进行初始化,一般设置SP为60H.

云县13319801445: 什么是堆栈,51单片机堆栈指针SP的使用 -
邵毕开林: 在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场.要点:堆,队列优先,先进先出(FIFO—first in first out)[1] .栈,先进后出(FILO—First-In/Last-Out).

云县13319801445: 51单片机:假定设定堆栈指针SP的值为46H,在进行子程序调用时把断点地址进栈保护后,SP的值为48H -
邵毕开林: SP是指针.程序调用地址是两个字节的.所以SP+2

云县13319801445: 单片机sp加括号和不加有区别吗 -
邵毕开林: 单片机SP加括号和不加是有区别的: 1、加括号,表示是地址存储的值,比如:x=[SP],表示将栈顶的值赋值给变量x. 2、不加括号,表示寄存器值,也就是地址,比如:x=SP,将寄存器值赋值给x. 举例说明,比如SP=7FH,7FH中存储的值为5AH,那么: x=[SP],则x=5AH x=SP ,则x=7FH

云县13319801445: 51单片机的堆栈指针sp始终是指向 -
邵毕开林: mcs-51单片机汇编语言中,没有sp这条指令,只有针对sp操作的指令.51单片机中sp是堆栈指针寄存器,存放着当前堆栈地址.堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值. 除了初始化堆栈...

云县13319801445: STC12C5410单片机复位后,SP默认指向哪个单元?一般初始化的时候SP应该设在哪个单元之后? -
邵毕开林: 栈指针,根据栈是递增还是递减处理,指向对应的栈顶或栈底.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网