欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8868|回復(fù): 11
收起左側(cè)

單片機(jī)可以執(zhí)行多少次嵌套?原因是什么?

  [復(fù)制鏈接]
ID:488693 發(fā)表于 2019-3-12 15:34 | 顯示全部樓層 |閱讀模式
如題
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-3-12 23:54 | 顯示全部樓層
這個和單片機(jī)的硬件有關(guān)的,很多人是以8051的C語言開始學(xué)習(xí)的,8051的堆棧是程序自動分配的軟件堆棧,理論上來說從030H到0FFH都可以作為堆棧,大概200層吧,那么在C中,大概就能嵌套200層,至少理論上來說是這樣的
但別的單片機(jī)就不一樣的了,有的是使用硬件堆棧,合泰單片機(jī)就是這樣的硬件堆棧,有的型號只有4層硬件堆棧,也就是說最多只能嵌套4層,PIC的單片機(jī)也是大概如此,像這種硬件堆棧,而且只有幾層堆棧的單片機(jī),一般是不會嵌套的,函數(shù)的遞歸也是不允許的,就是中斷函數(shù)里面都不用函數(shù)之類的要用到堆棧的語句

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:483991 發(fā)表于 2019-3-12 17:14 | 顯示全部樓層
如果設(shè)計(jì)合理,N次嵌套都不是個事

評分

參與人數(shù) 3黑幣 +26 收起 理由
areyouok + 6
Sawardeakar + 10 贊一個!
春風(fēng)十里吹 + 10 很給力!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:277976 發(fā)表于 2019-3-12 18:47 | 顯示全部樓層
堆棧應(yīng)該是跟C編譯器有關(guān)和開辟的堆棧區(qū)空間的大小有關(guān)。因此,子程序能嵌套多少層是跟C編譯器有關(guān)和開辟的堆棧區(qū)空間的大小有關(guān)。有的C編譯器在編譯時,如果溢出會有警告或者出錯的提示,但是也有的C編譯器如果溢出卻不會有警告或者出錯的提示,畢竟C編譯器也是一種人為的軟件,不同的版本也可能存在差異。我自己也開發(fā)過編譯器的子程序嵌套的功能,因此我深知子程序的嵌套肯定是有層數(shù)限制的,嵌套越少越安全。我平時用keil4 編譯M3和M4核的單片機(jī),一般是把嵌套數(shù)控制在4層左右以內(nèi)。應(yīng)該以實(shí)際為準(zhǔn),如果程序出現(xiàn)了莫名其妙的明顯錯誤,可以考慮是不是嵌套層數(shù)太多或者堆棧溢出的問題。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:80221 發(fā)表于 2019-3-12 19:34 | 顯示全部樓層
若是中斷嵌套,最好都不要寫這種代碼。應(yīng)當(dāng)拒絕浪費(fèi)內(nèi)存這種無意義行為
回復(fù)

使用道具 舉報(bào)

ID:391730 發(fā)表于 2019-12-9 18:30 | 顯示全部樓層
親測,5層棧溢出
回復(fù)

使用道具 舉報(bào)

ID:391730 發(fā)表于 2019-12-9 18:32 | 顯示全部樓層
正規(guī)007 發(fā)表于 2019-3-12 17:14
如果設(shè)計(jì)合理,N次嵌套都不是個事

胡說!你試試最簡單的遞歸看看!
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2019-12-9 23:26 | 顯示全部樓層
Y_G_G 發(fā)表于 2019-3-12 23:54
這個和單片機(jī)的硬件有關(guān)的,很多人是以8051的C語言開始學(xué)習(xí)的,8051的堆棧是程序自動分配的軟件堆棧,理論上來 ...

8051單片機(jī)即使把08H-FFH所有內(nèi)存都作為堆棧,也不會有200層,因?yàn)橹挥?40個存儲單元,而第一個斷點(diǎn)都有2個字節(jié)的地址需自動存入,這樣也只有120層,如果程序真有120層調(diào)用,每一層的中間運(yùn)行數(shù)據(jù)將無存儲空間可用,一般編寫程序都需要留出足夠的內(nèi)存空間供變量使用,堆棧移至內(nèi)存的尾部,大概占16-30個字節(jié)地址,程序嵌套建議不超過8層為好

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:532541 發(fā)表于 2019-12-13 08:16 | 顯示全部樓層
嵌套的層數(shù)與堆棧的深度有關(guān),每次調(diào)用子程序,或者相應(yīng)中斷,都要在堆棧中保留返回值,如何堆棧滿了,再嵌套,就無法返回了。我用過最PIC16c57,硬件堆棧2級。。 若是標(biāo)準(zhǔn)的51單片機(jī),堆棧在128B的RAM中可以自己設(shè)置指針,但是R0-R7 用戶的數(shù)據(jù)要占用一些RAM 剩余的可做堆棧,每次入棧2字節(jié),可以計(jì)算出能嵌套多少次了,52多了128B的RAM 可以用l來做堆棧 128B的堆棧可以嵌套64次。當(dāng)然每次嵌套要保存數(shù)據(jù)還需要RAM。
回復(fù)

使用道具 舉報(bào)

ID:416239 發(fā)表于 2019-12-13 14:56 | 顯示全部樓層
我用過最多4次
回復(fù)

使用道具 舉報(bào)

ID:663288 發(fā)表于 2019-12-13 15:30 | 顯示全部樓層
不同的單片機(jī)可以執(zhí)行的嵌套也不同,RAM大的單片機(jī),多少級都是隨便的
回復(fù)

使用道具 舉報(bào)

ID:426861 發(fā)表于 2019-12-13 16:53 | 顯示全部樓層
受限于單片機(jī)硬件和C語言規(guī)范
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表