導航:首頁 > 操作系統 > 51單片機sp

51單片機sp

發布時間:2022-09-07 10:00:10

❶ 為什麼mcs51單片機復位後,sp的初值是07H而不是81H

sp這個寄存器裡面存的是07H。
RAM初始化前七個被用作為R1-R7
堆棧指針只能在07H上。
07H也是地址。

你說的81H是特殊寄存器sp的地址。
也就是說地址81H裡面的值是07H。

特別要注意的是片內RAM高128位元組區和特殊寄存器SFR的
地址是相同的。間接定址存取片內ram數據。直接定址存取SFR。

概括就是,這兩塊地址獨立的,你說的兩個數都是不同塊的地址。

❷ 單片機的堆棧指針SP有什麼作用

在51單片機中,SP棧指針是一個專用的8位寄存器,系統復位後,SP初始化為07H,使得堆棧指針實際上是由08H單元開始。
在響應中斷或子程序調用時,發生入棧操作,入棧的是16位PC值;51中有PUSH壓入和POP彈出棧操作指令,如有必要,在中斷或調用子程序時可用POSU指令把PSW或其它需要保護的寄存器的內容壓入堆棧加以保護;返回前再使用POP指令把它們恢復。

❸ 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指令使用堆棧,要注意進出棧的匹配,否則將引起不可預期的後果。

❹ 什麼是堆棧,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會自動管理。

❺ 單片機中的SP設置問題

如果是51單片機的話上電後SP默認的是07h,寄存器組默認的是第一組就是00h-07h這8個單元,寫程序的時候將自定義變數區設定在堆棧深度以外就可以了。
一般是將4個寄存器組單元地址預留出來。

❻ 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地址相等,但是定址方式不一樣,所以單片機能區分得開

❼ 51系列單片機上電復位後堆棧指針sp的初始值為多少最大容量是多少

答:51系列單片機上電復位後堆棧指針SP的初始值為07H,即SP=07H。堆棧區最大容量是120位元組,即08H~7FH全為堆棧區。可事實上沒有這么用的,也不可能用這么多,內部RAM主要用於存放程序運行中的變數。

❽ 單片機里sp是什麼意思啊

單片機里sp是堆棧指針。

堆棧指針SP英文全稱為stack pointer,是單片機控制器的組成部件之一,與時控制邏輯電路、指令寄存器解碼器、地址指針DPTR、程序計數器等部件共同組成CPU的神經中樞。堆棧指針在單片機里的作用是隨時跟蹤棧頂地址,以便存取單片機的數據。

每當執一次PUSH指令時,SP就(在原來值的基礎上)自動加1,每當執行一次POP指令,SP就(在原來值的基礎上)自動減1。

(8)51單片機sp擴展閱讀

由於SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設置在規定的內存單元中,如在程序開始時,用一條MOV SP,#5FH指令,就是把堆棧設置在從內存單元60H開始的單元中。

一般程序的開頭總有這么一條設置堆棧指針的指令,因為開機時,SP的初始值為07H,這樣就使堆棧從08H單元開始往後,而08H到1FH這個區域正是8031的第二、三、四工作寄存器區,經常要被使用,這會造成數據的混亂。

不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習慣問題。當設置好堆棧區後,並不意味著該區域成為一種專用內存,它還是可以象普通內存區域一樣使用,只是一般情況下編程者不會把它當成普通內存用了。

❾ 什麼是堆棧,51單片機堆棧指針SP的使用

在計算機領域,堆棧是一個不容忽視的概念,堆棧是兩種數據結構。堆棧都是一種數據項按序排列的數據結構,只能在一端(稱為棧頂(top))對數據項進行插入和刪除。在單片機應用中,堆棧是個特殊的存儲區,主要功能是暫時存放數據和地址,通常用來保護斷點和現場。要點:堆,隊列優先,先進先出(FIFO—first in first out)[1] 。棧,先進後出(FILO—First-In/Last-Out)。

閱讀全文

與51單片機sp相關的資料

熱點內容
訪問伺服器公網地址 瀏覽:656
pdf列印底色去掉 瀏覽:443
java快遞介面 瀏覽:395
哪個app可以教新爸爸 瀏覽:210
如何查看伺服器系統版本信息 瀏覽:524
成都市土地出讓金演算法 瀏覽:702
鋼筋加密標記 瀏覽:575
ps中擴展功能在文件夾的什麼位置 瀏覽:903
雙極壓縮機為什麼要先高壓 瀏覽:527
蘋果手機伺服器填什麼 瀏覽:832
android移動動畫效果 瀏覽:691
電子和伺服器是什麼意思 瀏覽:691
phpurl中文亂碼問題 瀏覽:893
程序員那麼可愛大結局陸漓產子 瀏覽:538
java如何從雲伺服器讀取本地文件 瀏覽:924
壓縮空氣軟管製作方法 瀏覽:912
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:530
安卓怎麼弄成蘋果在線 瀏覽:435