單片機不同晶振怎么計算延遲時間?


單片機C語言中,怎么通過循環次數計算延遲函數的延遲時間?  

首先你要知道一個指令周期是幾秒 算法是1/(晶振頻率除以12) 然后你要知道循環究竟執行了幾個指令周期

你可以用keil里在線反匯編命令看看你的循環編譯成機器語言后到底是幾個指令周期 這樣就知道了延遲時間 當然你取近似值也可以的 比如 for(i=0,i<255,i++){x=2} 這里x=2是一個指令周期 而執行了255次 假如你的晶振是12MHZ的 則你執行一個指令周期是1us 255次是0.255ms

 

22.1184    一個指令 0.5us       1/(23/12)

 

 

 

干嘛管12m是多少,就算出23M一個周期是多少,再用總時間除出來次數唄,就for循環那么多次
 
 
9:31:16 【吐槽】小波Linux 2015/12/11 9:31:16
12個機器周期 
【吐槽】小波Linux 2015/12/11 9:31:30
一個周期 0.5us
【吐槽】小波Linux 2015/12/11 9:31:50
1  / ( 23/12)=0.5us
【吐槽】小波Linux 2015/12/11 9:32:15
6us / 0.5us = 次數? 9:34:00 【潛水】青 2015/12/11 9:34:00
是的 【潛水】青 2015/12/11 9:34:17
還要除二 【潛水】青 2015/12/11 9:34:34
for循環里面每次執行兩天指令
【吐槽】小波Linux 2015/12/11 9:35:40
一個for語句  for(i=0;i<12;i++);  6us
【吐槽】小波Linux 2015/12/11 9:35:46
23mhz
9:48:21 【潛水】青 2015/12/11 9:48:21
 for(i=0;i<6;i++);  【潛水】青 2015/12/11 9:49:00
我長時間沒算忘了 9:49:11 【潛水】青 2015/12/11 9:49:11
給你查呢一下 【潛水】青 2015/12/11 9:51:01
 for(i=0;i<6;i++); 這個執行下來應該就是6.24us 【潛水】青 2015/12/11 9:51:10


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM