㈠ 簡述51單片機堆棧進棧和出棧操作規則
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為絕對轉移指令,轉移目的在指令後一個
㈡ 單片機堆棧指令
PUSH 30H ;61H中的值變為24H,SP:61H,其他不變
PUSH 31H ;62H中的值變為10H,SP:62H,其他不變
POP DPL ;DPL:10H,SP:61H,其他不變
POP DPH ;DPH:24H,SP:60H,其他不變
MOV 30H,#00H ;30H:00H,其他不變
MOV 31H,#0FFH ;31H:0ffH,DPL:10H,SP:61H,其他不變
㈢ 什麼叫堆棧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。
㈣ 單片機堆棧是怎麼運算
51單片機堆棧是在片內RAM區實現的能先進後出的一個存儲區域,由SP寄存器實現數據的入棧和出棧,當有數據入棧時,比如PUSH
ACC,此時SP先加一,然後把ACC中的內容存到SP所指向的內存單元中。出棧時,比如POP
ACC,此時先把SP所指向的內存單元(棧頂單元)內容送到ACC中,然後SP減一
㈤ 在單片機中什麼是堆棧它的作用是什麼
在單片機應用中,堆棧是個特殊的存儲區,主要功能是暫時存放數據和地址,通常用來保護斷點和現場。在計算機領域,堆棧是一個不容忽視的概念,堆棧是一種數據結構。堆棧都是一種數據項按序排列的數據結構,只能在一端(稱為棧頂(top))對數據項進行插入和刪除。
堆棧是一個特定的存儲區或寄存器,它的一端是固定的,另一端是浮動的。對這個存儲區存入的數據,是一種特殊的數據結構。所有的數據存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照「先進後出」的原則存取,位於其中間的元素,必須在其棧上部(後進棧者)諸元素逐個移出後才能取出。在內存儲器(隨機存儲器)中開辟一個區域作為堆棧,叫軟體堆棧;用寄存器構成的堆棧,叫硬體堆棧。
(5)單片機堆棧過程擴展閱讀:
棧的優勢是,存取速度比堆要快,僅次於直接位於CPU中的寄存器。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。另外,棧數據在多個線程或者多個棧之間是不可以共享的,但是在棧內部多個值相等的變數是可以指向一個地址的,詳見第3點。堆的優勢是可以動態地分配內存大小,生存期也不必事先告訴編譯器,Java的垃圾收集器會自動收走這些不再使用的數據。但缺點是,由於要在運行時動態分配內存,存取速度較慢。
㈥ 什麼是堆棧MCS-51單片機的堆棧怎樣設置的
堆棧其實就是一塊存儲器區域,51單片機中可以用寄存器SP來設置棧頂地址,壓棧操作,地址是往上加的,出棧則地址往下減。遵循後進先出原則。
㈦ 8051單片機堆棧
51單片機的堆棧是向上生長的,就是堆棧不為空時,棧底地址小於棧頂地址,當將數據入棧時,棧頂地址增加。還有一個技巧是,堆棧是數據存儲器的一部分,也就是說堆棧除了利用push和pop訪問,也可以通過普通的選址方法訪問,例如mov。有時我們想訪問堆棧數據,但不想改動變動棧頂,這時可以通過mov來訪問數據。還有一個書上很少提到的知識點是出棧之後,原來那個棧頂的內容並不會清零,所以我們依然可以像對待普通數據存儲器一樣訪問。