很簡單, for迴圈也是需要時間的.
當你使用模擬的時候,通常可以在編譯器裡面檢視這段程式碼的彙編指令.
你可以看書它的用到了多少個彙編指令, 然後在你的晶片手冊上查詢,每一個彙編指令執行需要多少個最小指令週期. 最小指令週期才是你說的1um, 全部加起來, 你就知道你這句話用掉了多少個最小指令.
很明顯 遠遠超過了1個最小指令.9秒的的誤差算少的了...
所以說,假如你要做1s的延遲, 最好使用內部時鐘中斷來做,直接在程式內部delay延時的話,佔用系統資源還算不準...
具體解釋下上圖, 為了拿這5分還真不容易...
首先, 進入函式就需要5個彙編指令, 這些指令主要是入棧,備份指標的操作, 不同的編譯器指令不同,但都差不多.... 當然 這5個指令是進入函式只跑一次, 佔用時間不多, 消耗時間最多的是你for迴圈內部的指令, 一個for迴圈需要8條彙編指令才能實現, 而每個彙編指令通常都需要消耗1-2個最小指令迴圈,具體那個指令消耗幾個迴圈我懶的查手冊, 不同的晶片不一樣, 你自己看看你用的晶片手冊把....
以上... 應該清楚了把.. 不明白追問, 我要是再次無聊的話, 會修改回答.
很簡單, for迴圈也是需要時間的.
當你使用模擬的時候,通常可以在編譯器裡面檢視這段程式碼的彙編指令.
你可以看書它的用到了多少個彙編指令, 然後在你的晶片手冊上查詢,每一個彙編指令執行需要多少個最小指令週期. 最小指令週期才是你說的1um, 全部加起來, 你就知道你這句話用掉了多少個最小指令.
很明顯 遠遠超過了1個最小指令.9秒的的誤差算少的了...
所以說,假如你要做1s的延遲, 最好使用內部時鐘中斷來做,直接在程式內部delay延時的話,佔用系統資源還算不準...
具體解釋下上圖, 為了拿這5分還真不容易...
首先, 進入函式就需要5個彙編指令, 這些指令主要是入棧,備份指標的操作, 不同的編譯器指令不同,但都差不多.... 當然 這5個指令是進入函式只跑一次, 佔用時間不多, 消耗時間最多的是你for迴圈內部的指令, 一個for迴圈需要8條彙編指令才能實現, 而每個彙編指令通常都需要消耗1-2個最小指令迴圈,具體那個指令消耗幾個迴圈我懶的查手冊, 不同的晶片不一樣, 你自己看看你用的晶片手冊把....
以上... 應該清楚了把.. 不明白追問, 我要是再次無聊的話, 會修改回答.