使用不同的芯片會用到不同的指令集,同一條指令運行所需的時鐘周期也是不一樣的,即便源代碼完全一樣生成的hex文件也一樣的情況下,使用不同的單片機芯片使用完全相同的延時函數,具體的延時時間也會有差別的。以STC單片機為例,他的指令集就分Y1,Y3,Y5,Y6四種,我們常用的STC89C52RC采用的就是Y1指令集,而STC8F1K08采用的就是Y6指令集。以同樣的一條指令NOP為例 STC89C52RC需要12個時鐘周期 而STC8F1K08只需要1個時鐘周期,這四種指令集速度是不一樣的。所以樓主問的當i=1時為什麼等于10us? 真的沒法說,因為不知道你指的是什么型號的單片機。你必須說出你的型號,才好針對具體問題具體分析。
以下附圖說明各個指令集所需時鐘周期(詳情請看STC-ISP軟件,截圖只是其中一部分,說明相同指令在不同指令集下所需時鐘周期是不一樣的)
STC89C52RC采用的是Y1指令集,他的延時函數 i=1是延時7us 真找不到你說的 10us的,這里還多執行了一個i=1呢,想一想什么芯片比STC89C52RC
還慢呢?想不出來啊!
|