色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

單片機堆棧的小故事讓你更容易理解堆棧的概念

GReq_mcu168 ? 來源:未知 ? 作者:工程師曾玲 ? 2018-09-23 15:58 ? 次閱讀

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

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

你基本上應(yīng)該清楚,單片機里面是有存儲區(qū)和CPU的,如果你不清楚,那么我剛剛告訴你了,請記住。現(xiàn)在,請你把單片中的CPU想成一個人(你完全可以把他想成是你宿舍的那個天天和你吵嘴的同學(xué),一會你就會發(fā)現(xiàn)這會非常有趣)在這里就叫他C哥吧,不過這個人不同于常人,有一些特點,一會我們會慢慢說清楚,現(xiàn)在要告訴你的關(guān)于這個人的第一個特點

是:他的記憶能力很差。下面,請你把存儲區(qū)想象成一個一個排好的小盒子,這些盒子的作用大致可以分成兩類:1、保存寫有你命令的紙條,比如你在某個盒子里面的紙條上寫著:去洗我的襪子!;2、保存你的一些東西,比如你那雙正在污染宿舍空氣的臭襪子。因為C哥是一個記憶力不怎么好的人,所以,這些盒子都有自己的編號,以方便他查找。

那么,現(xiàn)在,我們可以來說明一下單片機是如何工作的了。首先,你要把所有的命令還有需要處理的東西放進(jìn)那些小盒子,比如剛才提到的你那雙待洗的襪子還有那張紙條,這時你應(yīng)該發(fā)現(xiàn)C哥另一個特點:笨——他只會做你明確告訴他的事情,也就是說,如果你沒有在紙條上寫“去洗我的襪子!”,那么C哥極有可能會無動于衷地看著你的襪子直到他被熏暈倒,當(dāng)然,更可能的情況是他根本找不到你的襪子…

好了,當(dāng)你把要做的事情和該怎么做寫到盒子里之后,下面的任務(wù)就交給C哥了。C哥做事真的很講原則,他會按照你給定的順序或者——如果你沒有給定的話,根據(jù)盒子上面的編號按照從小到大的順序——一個一個地打開盒子,讀取里面的命令、處理相應(yīng)的事件,直到所有的事情都執(zhí)行完畢,他就會休息。請你牢記這個簡單而有趣的過程,因為其實單片機就是這樣工作的,當(dāng)然,這里忽略了許多細(xì)節(jié),但是這對你從直覺上理解單片機的概念以及足夠了。

下面,就要開始說明堆棧這個概念了,思來想去,還是覺得如果直接把“堆棧”這個詞用到文中來,實在不符合本文的風(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ù)就是堆棧是需要你來指定的,也就是說,你要預(yù)先把一些盒子指定為“記憶盒子”。下面,說明一下是如何指定“記憶盒子”的。

其實這個過程很簡單,在單片機的專用寄存器里面有一個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)該是一雙你的襪子,于是他拿到了你的襪子。但是,他還是不知道。

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

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634660
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211587
  • 堆棧
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19754

原文標(biāo)題:一個講透了單片機堆棧的小故事

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    詳解STM32單片機堆棧

    學(xué)習(xí)STM32單片機的時候,總是能遇到“堆棧”這個概念。分享本文,希望對理解堆棧有幫助。 對于
    發(fā)表于 01-12 11:30

    單片機堆棧理解

    參考鏈接:對單片機堆棧理解STM8數(shù)據(jù)手冊給出了堆棧的位置及大小。棧是從高到低分配,堆是從低到高分配。堆棧是內(nèi)存中一段連續(xù)的存儲區(qū)域,用來
    發(fā)表于 02-21 07:29

    合泰單片機HT48軟件堆棧的應(yīng)用

    對于 Holtek 八位元單片機來說,堆棧資源往往是有限的。例如,HT48R10A-1 就只有兩級堆棧。 本文將介紹如何利用軟件堆棧來解決這一問題。軟件
    發(fā)表于 04-20 17:40 ?95次下載

    關(guān)于堆棧的深入理解

    這里提了三個概念: 堆,棧,以及堆棧。我把棧和堆棧概念等同了。所以,接下來只要把兩個概念弄清楚就可以了:堆和棧。先說由來。由于我的工作大部
    的頭像 發(fā)表于 03-04 15:57 ?4214次閱讀
    關(guān)于<b class='flag-5'>堆棧</b>的深入<b class='flag-5'>理解</b>

    51單片機堆棧的作用和使用資料講解

    堆棧的作用是用在調(diào)用子程序或中斷程序時保護(hù)現(xiàn)場,因為51單片機的寄存器是十分有限的,而相對來說普通數(shù)據(jù)存儲器充足,通過入棧將寄存器中的內(nèi)容臨時保存到堆棧中(普通數(shù)據(jù)存儲器),這是一個
    發(fā)表于 06-13 17:45 ?2次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>堆棧</b>的作用和使用資料講解

    什么是單片機堆棧單片機堆棧有什么作用和原理說明

    什么是單片機堆棧?在片內(nèi)RAM中,常常要指定一個專門的區(qū)域來存放某些特別的數(shù)據(jù),它遵循順序存取和后進(jìn)先出(LIFO/FILO)的原則,這個RAM區(qū)叫堆棧
    的頭像 發(fā)表于 08-03 09:29 ?2w次閱讀

    51單片機多任務(wù)定時器和公共堆棧與私堆棧的源代碼和工程文件

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機多任務(wù)定時器和公共堆棧與私堆棧的源代碼和工程文件。
    發(fā)表于 12-26 15:37 ?15次下載
    51<b class='flag-5'>單片機</b>多任務(wù)定時器和公共<b class='flag-5'>堆棧</b>與私<b class='flag-5'>堆棧</b>的源代碼和工程文件

    STM32單片機堆棧深入解析

    學(xué)習(xí)STM32單片機的時候,總是能遇到堆棧這個概念。分享本文,希望對理解堆棧有幫助。 對于了解
    的頭像 發(fā)表于 10-30 17:31 ?4706次閱讀
    STM32<b class='flag-5'>單片機</b>的<b class='flag-5'>堆棧</b>深入解析

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

    學(xué)習(xí)單片機概念有極大的幫助,至少對于我是這樣的。 我想在關(guān)于單片機的眾多頭暈?zāi)X脹、摸不
    的頭像 發(fā)表于 10-30 20:55 ?463次閱讀

    單片機堆棧是什么?它的原理和作用又是什么?

    什么是單片機堆棧?在片內(nèi)RAM中,常常要指定一個專門的區(qū)域來存放某些特別的數(shù)據(jù),它遵循順序存取和后進(jìn)先出(LIFO/FILO)的原則,這個RAM區(qū)叫堆棧。它的作用子程序調(diào)用和中斷服務(wù)時CPU自動將
    發(fā)表于 11-11 10:51 ?70次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>堆棧</b>是什么?它的原理和作用又是什么?

    分析單片機堆棧,分享個人理解

    看關(guān)于單片機方面的書籍的時候,總是能看到別人說的一些堆棧啊什么的操作,之前看到這個術(shù)語就直接跳過,沒想到去探究單片機內(nèi)部的原理。但是最近課程學(xué)習(xí)微機原理這門課,需要我們寫匯編程序,匯編里面經(jīng)常遇到
    發(fā)表于 11-22 09:21 ?6次下載
    分析<b class='flag-5'>單片機</b><b class='flag-5'>堆棧</b>,分享個人<b class='flag-5'>理解</b>

    51單片機堆棧深入剖析

    上的擴(kuò)展,既有C語言的共性,又有它自己的特點。本文介紹的是Cx51程序設(shè)計時堆棧的計算方法。   1.堆棧的溢出問題。MCS51系列單片機堆棧設(shè)置在片內(nèi)RAM中,由于片內(nèi)RAM資源有
    發(fā)表于 11-22 16:36 ?16次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>堆棧</b>深入剖析

    詳解STM32單片機堆棧

    學(xué)習(xí)STM32單片機的時候,總是能遇到“堆棧”這個概念。分享本文,希望對理解堆棧有幫助。
    發(fā)表于 02-08 15:41 ?5次下載
    詳解STM32<b class='flag-5'>單片機</b>的<b class='flag-5'>堆棧</b>

    一個故事看懂單片機中的堆棧

    理解單片機的時候如果能把之前有的那些也許僅僅是直覺上的對計算機的理解融入進(jìn)來的話,可能會對學(xué)習(xí)單片
    發(fā)表于 02-08 17:00 ?0次下載
    一個<b class='flag-5'>故事</b>看懂<b class='flag-5'>單片機</b>中的<b class='flag-5'>堆棧</b>

    普通單片機與STM32單片機堆棧的區(qū)別

    學(xué)習(xí)STM32單片機的時候,總是能遇到“堆棧”這個概念。分享本文,希望對理解堆棧有幫助。
    的頭像 發(fā)表于 04-13 11:15 ?3161次閱讀
    主站蜘蛛池模板: 色综合色综合久久综合频道| 日本bbwhd| 手机伊在人线香蕉2| 亚洲中文无码AV在线观看| 18video性欧美19sex高清| 春药按摩人妻中文字幕| 精品欧美一区二区三区久久久| 欧美自拍亚洲综合图区| 午夜理论在线观看不卡大地影院| 在线综合 亚洲 欧美| 国产传媒18精品A片在线观看| 看黄色片子| 校园男男高h小黄文| YELLOW日本动漫高清免费| 好想被狂躁A片免费久99| 人与禽交3d动漫羞羞动漫| 一二三四高清中文版视频| 囯产免费久久久久久国产免费| 久久婷五月综合色啪首页| 学生精品国产在线视频| 哒哒哒高清视频在线观看| 蜜桃臀无码内射一区二区三区| 亚洲精品无码久久久久A片空| 动漫美女被羞羞动漫怪物| 免费色片播放器| 中文字幕久久久| 黄色直接观看| 日日做夜夜欢狠狠免费软件| 97人妻中文字幕免费视频| 久久精品电影院| 亚洲精品国产AV成人毛片| 成人在线视频观看| 欧美在线看欧美视频免费| 99久久婷婷国产综合精品青草 | 97精品在线| 老师别揉我胸啊嗯小说| 亚洲AV日韩AV欧美在线观看网| 欧美另类极品videosbest| 中文字幕一区在线观看视频| 久久国产精品免费网站| 野花韩国视频中文播放|