51微控制器 堆疊

2021-08-10 13:41:27 字數 913 閱讀 6946

堆疊的作用是用在呼叫子程式或中斷程式時保護現場,因為51微控制器的暫存器是十分有限的,而相對來說普通資料儲存器更充足,通過入棧將暫存器中的內容臨時儲存到堆疊中(普通資料儲存器),這是乙個用時間換取空間的程式設計方式。

51微控制器的堆疊是向上生長的,就是堆疊不為空時,棧底位址小於棧頂位址,當將資料入棧時,棧頂位址增加。還有乙個技巧是,堆疊是資料儲存器的一部分,也就是說堆疊除了利用push和pop訪問,也可以通過普通的選址方法訪問,例如mov。有時我們想訪問堆疊資料,但不想改動變動棧頂,這時可以通過mov來訪問資料。還有乙個書上很少提到的知識點是出棧之後,原來那個棧頂的內容並不會清零,所以我們依然可以像對待普通資料儲存器一樣訪問。

下面通過教科書上的乙個變成例子講解一下堆疊:

初始狀態

(a)=02h,(sp)=52h,(51h)=ffh,(52h)=ffh

pop dph

pop dpl

出棧兩次,sp=sp-2=50h

mov dptr,#4000h

(dptr)=4000h

rl a

(a)=04h

mov b,a

(b)=04h

movc a,@a+dptr

(a)=30h

push acc

sp=sp+1=51h,(51h)=30h

mov a,b

(a)=04h

inc a

(a)=05h

movc a,@a+dptr

(a)=50h

push acc

sp=sp+1=52h,(52h)=05h

ret (pch)=50h,(pcl)=30h,sp=sp-2=50h

org 4000h

db 10h,80h,30h,50h,30h,50h

51微控制器中的堆疊

在51微控制器中,堆疊 push 分為入棧和出棧 pop 遵循 先進後出,後進先出 的原則。堆疊可以看似乙個臨時儲存資料的暫存器。特點是儲存的資料不變,一般用來儲存中斷開始位址,和使用者所需要自己設定的資料。在使用時要現在片內ram中初始化,即給sp 堆疊指標乙個空間位址 然後按照先進後出恩,後進先...

51微控制器

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...

51微控制器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...