久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8555|回復: 11
收起左側

單片機可以執行多少次嵌套?原因是什么?

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

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

胡說!你試試最簡單的遞歸看看!
回復

使用道具 舉報

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天亚洲 | 免费一级黄色 | 成人小视频在线观看 | 999精彩视频| 一级黄色影片在线观看 | 在线观看av网站永久 | 日韩高清一区二区 | 国产观看 | 国产精品一区一区三区 | 日韩在线视频精品 | 日日噜噜噜夜夜爽爽狠狠视频, | 亚洲精品九九 | 欧美精品欧美精品系列 | 日日干干 | 在线视频一区二区 | 亚洲精品一区二区三区在线观看 | 午夜在线 | 日韩精品一区二区三区免费视频 | 国产高清亚洲 | 播放一级毛片 | 99免费在线观看 | 免费看色 | 黄网免费看 | 久草在线青青草 | 91av国产在线视频 | 国外成人在线视频网站 | 成人永久免费视频 | 久久综合色综合 | 最新日韩精品 | 亚洲欧美日韩在线一区二区 | 欧美日韩专区 | www.天天操| 最新中文字幕在线 | 久久久2o19精品 | 欧美二区三区 | 久久久久国产精品人 | 欧美综合久久 | 欧美日韩视频在线 | 天天夜夜操 | 欧美一级黑人aaaaaaa做受 | 欧美在线一区二区三区 |