在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個簡短的小故事帶你摸透單片機(jī)堆棧

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-10-30 20:55 ? 次閱讀

因為單片機(jī)CPU、存儲器、IO 等等,使他(人性化一點以配合下文)看起來就像一個比較小的計算機(jī),所以,在理解單片機(jī)的時候如果能把你之前有的那些也許僅僅是直覺上的對計算機(jī)的理解融入進(jìn)來的話,可能會對你學(xué)習(xí)單片機(jī)的概念有極大的幫助,至少對于我是這樣的。

我想在關(guān)于單片機(jī)的眾多讓你頭暈?zāi)X脹、摸不著頭腦甚至想撞墻的概念里面,“堆棧”可能是其中最可惡的一個,因為即使單單是從漢語的角度來理解這個詞就已經(jīng)讓你很暈了,其實我最初也想不通這是哪位大俠的創(chuàng)意,不過不用擔(dān)心,這里我們完全不去討論關(guān)于這個詞的問題(這個詞用得其實很好“堆”和“棧”都有他們各自的意思,準(zhǔn)確的概括了這個區(qū)域的功能,有興趣可以 Baidu 一下),這里我會打一個比較有趣的比方,以此來繞過那些令你想撞墻的概念,并使你在直覺上對“堆棧”這個概念有一個深刻的理解。

你基本上應(yīng)該清楚,單片機(jī)里面是有存儲區(qū)和 CPU 的,如果你不清楚,那么我剛剛告訴你了,請記住。現(xiàn)在,請你把單片中的 CPU 想成一個人(你完全可以把他想成是你宿舍的那個天天和你吵嘴的同學(xué),一會你就會發(fā)現(xiàn)這會非常有趣),在這里就叫他 C 哥吧,不過這個人不同于常人,有一些特點,一會我們會慢慢說清楚,現(xiàn)在要告訴你的關(guān)于這個人的第一個特點是:他的記憶能力很差。下面,請你把存儲區(qū)想象成一個一個排好的小盒子,這些盒子的作用大致可以分成兩類:1、保存寫有你命令的紙條,比如你在某個盒子里面的紙條上寫著:去洗我的襪子!;2、保存你的一些東西,比如你那雙正在污染宿舍空氣的臭襪子。因為 C 哥是一個記憶力不怎么好的人,所以,這些盒子都有自己的編號,以方便他查找。

那么,現(xiàn)在,我們可以來說明一下單片機(jī)是如何工作的了。首先,你要把所有的命令還有需要處理的東西放進(jìn)那些小盒子,比如剛才提到的你那雙待洗的襪子還有那張紙條,這時你應(yīng)該發(fā)現(xiàn) C 哥另一個特點:笨——他只會做你明確告訴他的事情,也就是說,如果你沒有在紙條上寫“去洗我的襪子!”,那么 C 哥極有可能會無動于衷地看著你的襪子直到他被熏暈倒,當(dāng)然,更可能的情況是他根本找不到你的襪子…好了,當(dāng)你把要做的事情和該怎么做寫到盒子里之后,下面的任務(wù)就交給 C 哥了。C 哥做事真的很講原則,他會按照你給定的順序或者——如果你沒有給定的話,根據(jù)盒子上面的編號按照從小到大的順序——一個一個地打開盒子,讀取里面的命令、處理相應(yīng)的事件,直到所有的事情都執(zhí)行完畢,他就會休息。請你牢記這個簡單而有趣的過程,因為其實單片機(jī)就是這樣工作的,當(dāng)然,這里忽略了許多細(xì)節(jié),但是這對你從直覺上理解單片機(jī)的概念以及足夠了。

下面,就要開始說明堆棧這個概念了,思來想去,還是覺得如果直接把“堆棧”這個詞用到文中來,實在不符合本文的風(fēng)格,考慮到其實“堆棧”也是存貯區(qū)(這一點你要記住,堆棧并不是一個像專用寄存器那樣專門的一個區(qū)域,它是由你在通用 RAM 區(qū)指定的。),按照本文的說法也就是一些盒子,所以,現(xiàn)在我們把“堆棧”改名叫“記憶盒子”,你可以感覺到,“堆棧”的作用和記憶有極大的關(guān)系,不過你也不用在這里糾結(jié)這個名字的由來,下面我會說的。

現(xiàn)在,請注意,我要開始解釋“記憶盒子”了,也就是“堆棧”。大致上說,“記憶盒子”的作用是當(dāng) C 哥執(zhí)行某任務(wù)到一半的時候突然有了更緊急的是事情要執(zhí)行的時候用來保存當(dāng)前任務(wù)的(包括盒子的編號和盒子里面的東西)。這么說你肯定暈了,其實,通俗一點,就是當(dāng) C 哥洗襪子洗到一半的時候突然接到你的命令要去打開另一個盒子(那個盒子里的紙條上可能寫著“給我換尿布”)并執(zhí)行里面的命令,因為 C 哥記憶力很差,以至于他做完那件緊急的事情后記不起要回到哪個盒子來繼續(xù)執(zhí)行“洗襪子”這個命令,這時候,他要把現(xiàn)在手頭的東西保存到“記憶盒子”里,要保存的東西有:1、放著紙條和襪子的盒子的編號(注意這里其實是兩項內(nèi)容);2、那雙襪子。這樣,當(dāng)他執(zhí)行完緊急任務(wù)后會去記憶盒子里,從里面找到兩張紙條,和一雙襪子(這個時候 C 哥還是沒有想起來他要洗襪子,他必須要到那張寫著洗襪子命令的紙條),他按照兩張紙條的信息知道自己要去哪個盒子去洗襪子,并在那里繼續(xù)完成洗襪子的任務(wù)。你可能會發(fā)現(xiàn),在這一段的解釋里面有一個重要的漏洞,那就是在 C 哥執(zhí)行完緊急任務(wù)后他是如何知道儲存著原來的任務(wù)信息的盒子的編號是存儲在哪個“記憶盒子”里呢?別著急,下面我會解釋的。

從本質(zhì)來說,“記憶盒子”與普通的盒子是沒有區(qū)別的,他們都是單片機(jī)里面的存儲單元,證明這一點的最好證據(jù)就是堆棧是需要你來指定的,也就是說,你要預(yù)先把一些盒子指定為“記憶盒子”。下面,說明一下是如何指定“記憶盒子”的。其實這個過程很簡單,在單片機(jī)的專用寄存器里面有一個 SP 指針(81H),這個指針里面記錄著堆棧的開始處的地址。用符合本文的話來解釋就是,C 哥的衣服上有一個口袋(也就是 SP 指針),這個口袋里面的“神奇紙條”上記錄著第一個“記憶盒子”的編號,而指定“記憶盒子”的過程就是你在這張“神奇紙條”上寫上一個盒子的編號(作為第一個“記憶盒子”的編號),這個紙條會自動地將紙條上的編號加 1 或者減 1,所以,某個目前并不確定的區(qū)域內(nèi)盒子具備了成為“記憶盒子”的可能,注意,堆棧的大小是不能規(guī)定的,這就是為什么用“生長”這個詞來形容堆棧。

現(xiàn)在,關(guān)于堆棧的概念基本上都介紹完了,但是,我知道,你可能還是很暈,甚至比看之前還暈,那是因為剛才敘述的這個過程是分開的,而且邏輯上并不是順序的,下面,順序的說一下,相信你馬上就明白了。

主角仍然是傻傻笨笨但任勞任怨的 C 哥,他一個一個的打開盒子按照里面的紙條上的說明執(zhí)行你規(guī)定的任務(wù)。而你,為了防止他在執(zhí)行復(fù)雜任務(wù)時犯傻,把一個盒子指定為“記憶盒子”,并把這個“記憶盒子”的位置寫在了一張 “神奇紙條”上放在了 C 哥的口袋里。現(xiàn)在,C 哥正在洗你的襪子,這個時候,他突然接到你的命令要去給你換尿布,而 C 哥知道自己很笨,所以他自動地掏出了口袋里的紙條,找到了第一個“記憶盒子”,然后拿出一張空白紙條,把裝著“給我洗襪子”那張紙條的盒子的編號寫在了上面并放進(jìn)“記憶盒子”。然后,他把“神奇紙條”放回了口袋里。當(dāng)這個任務(wù)完成后“神奇紙條”會自動將寫在它上面的編號加 1,也就是將一個新的、空的“記憶盒子”的編號寫在上面。之后,他會按照剛才的過程把裝著襪子的那個盒子的編號以及襪子本身分別放進(jìn)不同的記憶盒子(現(xiàn)在已經(jīng)有三個盒子成為“記憶盒子”,堆棧已經(jīng)長大了,紅色下劃線的字體就是這三個盒子里的內(nèi)容,注意是有先后順序的)。再然后,他就去給你換尿布了…

現(xiàn)在,尿布換完了,不過,果不其然,C 哥完全忘記了他要給你洗襪子這件事情了,不過,他記得一件事,那就是看口袋里的紙條。于是,他摸出了口袋里的紙條,上面當(dāng)然是一個“記憶盒子”的編號,他按照編號找到了第一個“記憶盒子”(按照上一段的順序應(yīng)該是第三個“記憶盒子”),里面應(yīng)該是一雙你的襪子,于是他拿到了你的襪子。但是,他還是不知道該干什么,于是他再次摸出了“神奇紙條”,這時,紙條上的編號已經(jīng)自動減 1 了,于是,他找到了新的“記憶盒子”,里面的紙條上記錄著襪子本來放置的盒子的編號,于是,他把襪子放到了那個盒子里。恩,你可以想到,現(xiàn)在 C 哥還是不知道要對襪子做些什么,他耐心的又一次摸出了那張“神奇紙條”,這次按照上面的編號,他找到了一張紙條,上面寫著的仍然是一個盒子的編號。C 哥按照編號找到了那個盒子,發(fā)現(xiàn)那個盒子里的紙條上寫著“給我洗襪子!”…至此,C 哥又回到了原來的任務(wù)——洗襪子。

現(xiàn)在,我希望你已經(jīng)明白了,堆棧其實就是你指定的一個些存儲單元,這些存儲單元被指定只用來保存一些特殊信息,比如地址(保護(hù)斷點)或者一些數(shù)據(jù)(保護(hù)現(xiàn)場),如果你一定要說這個存儲區(qū)有什么特別的話,那就是:1、這些存儲單元內(nèi)的內(nèi)容都是 CPU 在執(zhí)行某任務(wù)中途被打斷時的一些相關(guān)參數(shù);2、這些存儲單元的地址被記在了一個叫堆棧指針的地方,也就是 C 哥口袋里的那張紙條上!

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6044

    文章

    44627

    瀏覽量

    638971
收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)Debug工具性能對比 單片機(jī)調(diào)試常用命令

    單片機(jī)(Microcontroller Unit, MCU)調(diào)試是嵌入式開發(fā)中的重要環(huán)節(jié),它幫助開發(fā)者發(fā)現(xiàn)和修復(fù)代碼中的錯誤,優(yōu)化程序性能。不同的單片機(jī)和開發(fā)環(huán)境可能使用不同的調(diào)試
    的頭像 發(fā)表于 12-19 09:56 ?515次閱讀

    如何優(yōu)化單片機(jī)項目的功耗

    在現(xiàn)代電子設(shè)計中,功耗優(yōu)化已成為不可忽視的重要議題。對于單片機(jī)(MCU)項目而言,功耗不僅關(guān)系到產(chǎn)品的能效比,還直接影響到電池壽命和熱管理。 硬件層面的功耗優(yōu)化 1. 選擇合適的單片機(jī)
    的頭像 發(fā)表于 11-01 14:16 ?539次閱讀

    單片機(jī)怎么寫入程序

    單片機(jī)(Microcontroller Unit,MCU)是種集成電路芯片,它將計算機(jī)的CPU、存儲器、輸入/輸出接口等功能集成在芯片上。單片
    的頭像 發(fā)表于 10-21 11:21 ?976次閱讀

    單片機(jī)的中斷機(jī)制

    單片機(jī)的中斷機(jī)制是種重要的處理方式,它允許單片機(jī)在執(zhí)行主程序的過程中,能夠暫停當(dāng)前任務(wù),轉(zhuǎn)而處理外部或內(nèi)部緊急事件。這種機(jī)制極大地提高了系統(tǒng)的響應(yīng)速度和處理能力,使得單片機(jī)在各種應(yīng)用
    的頭像 發(fā)表于 10-17 18:03 ?1014次閱讀

    單片機(jī)出現(xiàn)故障怎么維修

    單片機(jī)出現(xiàn)故障時,維修過程需要系統(tǒng)地檢查和診斷,以確定故障的根本原因,并采取相應(yīng)的修復(fù)措施。以下是詳細(xì)的單片機(jī)維修指南,旨在幫助技術(shù)人員或愛好者有效地解決
    的頭像 發(fā)表于 10-17 17:57 ?1837次閱讀

    怎樣才知道單片機(jī)的性能到極限了?

    要確定單片機(jī)的性能是否達(dá)到極限,可以從多個方面進(jìn)行綜合評估。以下是些主要的判斷依據(jù):
    的頭像 發(fā)表于 09-11 09:39 ?426次閱讀
    怎樣才知道<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>單片機(jī)</b>的性能到極限了?

    單片機(jī)燒錄程序用什么軟件

    單片機(jī)燒錄程序是單片機(jī)開發(fā)過程中的重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入單片機(jī)的ROM中,以實現(xiàn)對
    的頭像 發(fā)表于 09-02 10:05 ?1708次閱讀

    單片機(jī)燒錄程序的基本步驟是什么

    單片機(jī)燒錄程序是單片機(jī)開發(fā)過程中非常重要的步,它涉及到將編寫好的程序代碼通過定的方式傳輸?shù)?b class='flag-5'>單片機(jī)內(nèi)部的存儲器中,使
    的頭像 發(fā)表于 09-02 09:47 ?1491次閱讀

    單片機(jī)引腳懸空是什么電平

    ,其電平狀態(tài)通常有兩種可能:高電平或低電平。具體取決于單片機(jī)的內(nèi)部結(jié)構(gòu)和外部環(huán)境因素。 1.1 內(nèi)部結(jié)構(gòu)因素 單片機(jī)的I/O引腳內(nèi)部結(jié)構(gòu)通常包括上拉電阻和
    的頭像 發(fā)表于 08-28 09:51 ?2590次閱讀

    文讀懂什么單片機(jī):組成結(jié)構(gòu)與應(yīng)用

    歡迎來到單片機(jī)的世界,這是種微小(但功能強(qiáng)大)的設(shè)備,改變了嵌入式系統(tǒng)的面貌。在本文中,您將了解單片機(jī)些基本知識、單片機(jī)的結(jié)構(gòu)以及微處
    的頭像 發(fā)表于 08-09 11:49 ?1822次閱讀
    <b class='flag-5'>一</b>文讀懂什么<b class='flag-5'>單片機(jī)</b>:組成結(jié)構(gòu)與應(yīng)用

    藍(lán)牙模塊如何實現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳

    藍(lán)牙模塊實現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳的過程可以分為以下幾個步驟: 硬件準(zhǔn)備 : 確保你有支持藍(lán)牙通信的單片機(jī)開發(fā)板,如Arduino、Raspberry Pi等。 準(zhǔn)備
    的頭像 發(fā)表于 07-24 17:59 ?2943次閱讀
    藍(lán)牙模塊如何實現(xiàn)<b class='flag-5'>單片機(jī)</b>和手機(jī)端數(shù)據(jù)互傳

    暑假如何學(xué)習(xí)單片機(jī)

    暑假是學(xué)習(xí)和掌握單片機(jī)基礎(chǔ)知識的良好時機(jī)。以下是關(guān)于如何在暑假期間學(xué)習(xí)單片機(jī)的建議計劃
    的頭像 發(fā)表于 07-03 09:19 ?599次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b>暑假如何學(xué)習(xí)<b class='flag-5'>單片機(jī)</b>

    單片機(jī)選型的原則與建議

    選擇不適合的單片機(jī),可能會導(dǎo)致項目成本的增加,開發(fā)周期的延長,甚至是項目失敗。今天這篇文章將帶你探索選擇單片機(jī)的原則,幫助你在這個充滿挑
    的頭像 發(fā)表于 05-29 11:35 ?1618次閱讀
    <b class='flag-5'>單片機(jī)</b>選型的原則與建議

    理解嵌入式和單片機(jī)的區(qū)別

    從上世紀(jì)80年代,由當(dāng)時的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300M的高速單片機(jī)。比如經(jīng)典的51系列單片機(jī),外觀只是
    發(fā)表于 05-03 10:30 ?4712次閱讀

    如何系統(tǒng)、科學(xué)地自學(xué)單片機(jī)

    的自學(xué)單片機(jī)呢?自學(xué)單片機(jī)需要定的計劃和方法,以下是具體的步驟和建議。如何系統(tǒng)、科學(xué)地自學(xué)單片機(jī)?學(xué)習(xí)電子基礎(chǔ)知識:理解電路原理、數(shù)字電子技術(shù)、模擬電子技術(shù)等基礎(chǔ)
    的頭像 發(fā)表于 03-28 08:03 ?1216次閱讀
    如何系統(tǒng)、科學(xué)地自學(xué)<b class='flag-5'>單片機(jī)</b>?
    主站蜘蛛池模板: 99插插插| 失禁h啪肉尿出来高h | 免费黄色三级 | 免费人成在线观看视频播放 | 欧美网色| 日韩a毛片 | 日本午夜三级 | 久久夜色精品国产噜噜 | 一级片在线免费看 | 亚洲综合激情另类专区 | 久久手机免费视频 | 精品精品国产理论在线观看 | 午夜韩国理论片在线播放 | 色播在线 | 男人日女人免费视频 | 看全黄大片狐狸视频在线观看 | 日本免费黄色录像 | 午夜神马福利免费官方 | 一级黄免费| 成人在线观看网站 | 色婷婷777| 特黄日韩免费一区二区三区 | 久久大综合 | 精品视频在线视频 | 老师喂我吃她的奶水脱她胸罩 | 色丁香久久 | 亚洲区视频在线观看 | 深点再深一点好爽好多水 | 永久免费精品影视网站 | 中国一级黄色毛片 | 五月婷婷视频在线观看 | 国产免费高清视频在线观看不卡 | 青青热久免费精品视频在线观看 | 成片一卡三卡四卡免费网站 | 国产精品日本亚洲777 | 国产精品久久久久久久久ktv | 深爱五月综合网 | 涩涩涩丁香色婷五月网视色 | aaaa大片| 嗯好舒服好爽好快好大 | 五月丁五月丁开行停停乱 |