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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8299|回復: 11
打印 上一主題 下一主題
收起左側

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

  [復制鏈接]
跳轉到指定樓層
樓主
ID:488693 發表于 2019-3-12 15:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如題
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
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 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:80221 發表于 2019-3-12 19:34 | 只看該作者
若是中斷嵌套,最好都不要寫這種代碼。應當拒絕浪費內存這種無意義行為
回復

使用道具 舉報

6#
ID:391730 發表于 2019-12-9 18:30 | 只看該作者
親測,5層棧溢出
回復

使用道具 舉報

7#
ID:391730 發表于 2019-12-9 18:32 | 只看該作者
正規007 發表于 2019-3-12 17:14
如果設計合理,N次嵌套都不是個事

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

使用道具 舉報

8#
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 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

10#
ID:416239 發表于 2019-12-13 14:56 | 只看該作者
我用過最多4次
回復

使用道具 舉報

11#
ID:663288 發表于 2019-12-13 15:30 | 只看該作者
不同的單片機可以執行的嵌套也不同,RAM大的單片機,多少級都是隨便的
回復

使用道具 舉報

12#
ID:426861 發表于 2019-12-13 16:53 | 只看該作者
受限于單片機硬件和C語言規范
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩a在线| 激情国产视频 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 日韩成人免费视频 | 精品国产一区二区三区日日嗨 | 久久久久久国产免费视网址 | 成人av一区| 亚洲一区中文字幕在线观看 | 丝袜 亚洲 欧美 日韩 综合 | 在线免费观看a级片 | 欧美日韩亚| 久草在线中文888 | 美女视频黄色片 | 在线观看成人小视频 | 国产精品一区二区精品 | 91视频一区 | 国产二区精品视频 | 美女视频一区二区三区 | 日本在线中文 | 国产美女一区二区 | 九色av| 国产成人99久久亚洲综合精品 | 日韩 欧美 二区 | 男人天堂免费在线 | 97视频精品 | 日韩免费一二三区 | 啪啪av | 免费在线观看一区二区三区 | 中文字幕在线观看视频网站 | 中文字幕在线国产 | 亚洲国产精品一区二区久久 | 国产成人午夜精品影院游乐网 | 欧美性生活一区二区三区 | 一本一道久久a久久精品蜜桃 | 黄片毛片免费观看 | 久久久av中文字幕 | 亚洲精品高清视频在线观看 | 亚洲成人一二区 | 欧美亚洲视频 | www日韩高清 | 久久综合久久自在自线精品自 |