51微控制器中的堆疊

2021-07-09 03:12:07 字數 865 閱讀 3288

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

堆疊是一種執行「後進先出」演算法的資料結構。

設想有乙個直徑不大、一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律:先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以「先進後出」就是這種結構的特點。

堆疊就是這樣一種資料結構。它是在記憶體中開闢乙個儲存區域,資料乙個乙個順序地存入(也就是「壓入——push」)這個區域之中。有乙個位址指標總指向最後乙個壓入堆疊的資料所在的資料單元,存放這個位址指標的暫存器就叫做堆疊指示器。開始放入資料的單元叫做「棧底」。資料乙個乙個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有乙個資料壓入堆疊,就放在和前乙個單元相連的後面乙個單元中,堆疊指示器中的位址自動加1。讀取這些資料時,按照堆疊指示器中的位址讀取資料,堆疊指示器中的位址數自動減 1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。

堆疊是計算機中最常用的一種資料結構,比如函式的呼叫在計算機中是用堆疊實現的。

堆疊可以用陣列儲存,也可以用以後會介紹的鍊錶儲存。

下面是乙個堆疊的結構體定義,包括乙個棧頂指標,乙個資料項陣列。棧頂指標最開始指向-1,然後存入資料時,棧頂指標加1,取出資料後,棧頂指標減1。

#define max_size 100

typedef int data_type;

struct stack

;

51微控制器 堆疊

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

51微控制器

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

51微控制器

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