① 於8051單片機的堆棧,回答: (1) 、如何建立堆棧
將特殊寄存器SP賦值,這個值(表示的DATA地址)要在你規劃的所有用戶變數之後,這樣就部署好可用堆棧了。
② 51系列單片機的堆棧與通用微機中的堆棧有何
stackpointer:堆棧指針在51系列單片機里,堆棧指針sp在片內RAM128B中開辟棧區,並隨時跟蹤棧頂地址。它是按"先進後出"的原則存取數據。開機復位後,單片機棧底地址為07H。主要用來保存臨時數據,局部變數和中斷/調用子程序程序的返回地址。堆棧指針總是指向棧頂元素。在51系列單片機中,堆棧是向上生長的,所以數據入棧的時候,堆棧指針先加1,再壓棧。出棧的時候先彈出數據,堆棧指針再減1。但在AVR單片機中,堆棧是向下生長的,數據入棧時指針將減1,數據出棧時指針將加1。參見網路:/view/2081454.htm
③ 什麼叫堆棧8051堆棧指示器SP有多少位,作用是什麼單片機初始化話後SP中的內容是什麼
堆棧是連續的內存單元,存取方式遵循「先進後出」的原則。
其作用一般是保存寄存器或標志寄存器的內容。
堆棧就是這樣一種數據結構。它是在內存中開辟一個存儲區域,數據一個一個順序地存入(也就是「壓入——push」)這個區域之中。有一個地址指針總指向最後一個壓入堆棧的數據所在的數據單元,存放這個地址指針的寄存器就叫做堆棧指示器。開始放入數據的單元叫做「棧底」。數據一個一個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有一個數據壓入堆棧,就放在和前一個單元相連的後面一個單元中,堆棧指示器中的地址自動加1。讀取這些數據時,按照堆棧指示器中的地址讀取數據,堆棧指示器中的地址數自動減
1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。
sp是一個8位專用寄存器,它批示出堆棧頂部在內部ram塊中的位置。系統復位後,sp初始化為07h,實際上堆棧是由08h單元開始的。考慮08h~1fh單元分別屬於工作寄存器區1~3,若在程序設計中用到這些區,則最好把sp值改值為1fh或更大的值。
sp是一個8位專用寄存器,它批示出堆棧頂部在內部ram塊中的位置。系統復位後,sp初始化為07h,實際上堆棧是由08h單元開始的。考慮08h~1fh單元分別屬於工作寄存器區1~3,若在程序設計中用到這些區,則最好把sp值改值為1fh或更大的值。
mcs-51的堆棧是向上生成的,若sp=60h,cpu執行一和調用指令或者響應中斷後,pc進棧,pcl保護到61h,pch保護到62h,sp=62h。
④ 8051單片機的堆棧有幾級
只要棧指針之後的寄存器區沒有使用,就可以安排堆棧,假設一個極限的情況:將棧指針指向30H,(MOV SP,#2FH)以7FH為界,可以有50H位元組,可嵌套28H級子程序(每個子程序用兩位元組堆棧),實際應用要小許多--畢竟要用一些寄存器作運算。
要搞清一個問題:如果不是嵌套(子程序里調用子程序),那堆棧不會太深。
⑤ 51單片機堆棧是什麼意思可以對哪些單元堆棧
堆棧的功能就是先進後出,這樣可以非常簡單的解決子程序調用和中斷(其實是特殊的子程序調用)問題,主要是嵌套的返回,用堆棧能准確的找到返回點。51單片機的堆棧是向上生長的,其實可以利用片內RAM中沒用到的一切空間(當然得是連續的),復位後堆棧指針指向07H,一般從30H開始使用,就是復位後將堆棧指針指向30H,一定要弄清楚中斷還有子程序調用時單片機是怎麼壓棧,返回時是怎麼出棧的,利用堆棧可以讓中斷返回時返回到指定的地方,這招很絕。
⑥ 什麼是堆棧MCS-51單片機的堆棧怎樣設置的
堆棧其實就是一塊存儲器區域,51單片機中可以用寄存器SP來設置棧頂地址,壓棧操作,地址是往上加的,出棧則地址往下減。遵循後進先出原則。
⑦ 80C51 單片機堆棧區的進棧和出棧遵循的原則是
80C51 單片機堆棧區的進棧和出棧遵循的原則是後進先出。
⑧ 8051單片機堆棧
51單片機的堆棧是向上生長的,就是堆棧不為空時,棧底地址小於棧頂地址,當將數據入棧時,棧頂地址增加。還有一個技巧是,堆棧是數據存儲器的一部分,也就是說堆棧除了利用push和pop訪問,也可以通過普通的選址方法訪問,例如mov。有時我們想訪問堆棧數據,但不想改動變動棧頂,這時可以通過mov來訪問數據。還有一個書上很少提到的知識點是出棧之後,原來那個棧頂的內容並不會清零,所以我們依然可以像對待普通數據存儲器一樣訪問。
⑨ 關於51單片機堆棧的問題
首先,SP是堆棧指針,當壓堆棧的時候,它增加一,當出棧的時候,它減一。
PUSH
ACC和POP
ACC分別是壓和出的指令。
除此之外,中斷和call指令,硬體自動將PC程序指針壓棧,等到reti或ret指令的時候,出棧。
一般講SP設置大一點,比如70H,以免和其他單元沖突。
⑩ 求解單片機原理題1、請說明80C51單片機的堆棧的作用和操作規律。補考試題,求解,急急急
1.堆棧用於響應中斷或調用子程序時保護斷點地址,也可通過棧操作指令(push
和pop保護和恢復現場)其中入棧時先SP+1再將內容壓入當前SP所指示的堆棧單元
中,出棧則先將SP所指示的內部ram單元中內容送入直接地址定址的單元中,再將
SP減1.
2.中斷允許寄存器的功能是控制CPU對中斷的開放和屏蔽以及每個中斷源是否允許
中斷結構包括EA(CPU中斷總允許位),ES(串列口中斷允許位)ET1(定時器1中
斷允許位)EX1(外部中斷1中斷允許位)ET0(定時器0中斷允許位)EX0(外部中
斷0中斷允許位)
3.T機=12/fosc=12/(6*E6)=2us
X=2*E13-T/T機=8192-200/2=8092=1F9CH=1111 1100 1110 0B
因為TL1的高3位未用, 修正後X=1111 1100 0001 1100B=FC1CH
4.LJMP為長轉移指令,可轉向64KB程序存儲器的任一單元;SJMP為相對轉移指令
,偏移范圍-128~+127共259位元組;AJMP為絕對轉移指令,轉移目的在指令後一個
存儲單位所在2K區間內。
5.按鍵抖動:在觸點抖動期間檢測按鍵的通與斷狀態,可能導致判斷出錯,即按
鍵一次按下或釋放被錯誤認為是多次操作。
6.汽車的溫控系統,測控系統,防盜報警等多項系統中應用單片機。汽車電子中
涉及A/D和D/A轉換的模塊基本都會有單片機的存在。以下以汽車倒車雷達為例,
雷達控制部分由89C51單片機構成,前端數據採集由超聲波測距,系統由發射和接
收裝置來獲取數據,根據所測得的距離來判斷是否調用聲音報警程序,距離小於
預置點時,調用報警模塊。