程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言的for循環中執行一次需多少機器周期?

C語言的for循環中執行一次需多少機器周期?

編輯:C語言問答

C語言的for循環中執行一次需多少機器周期?

比如
for (i=0;i<100;i++);
此語句執行一百次,每次耗費多少個機器周期?
每個機器周期的長度是否取決於晶振頻率?
如何計算?

最佳回答:

====================================
問題補充:5樓的朋友,如果我改成
for (i=9;i<100;i++)
x=2;
其延時又是多少?
====================================
賦值語句的耗時一般是不計入時間消耗的(就像我們計算時間復雜度時,不考慮賦值的時間消耗一樣)
所以:
for (i=9;i<100;i++)
x=2;
的時間消耗就可以理解為for (i=9;i<100;i++);的時間消耗,
大約就是:
92*8*1us=0.736ms(12M晶振)

=======================================================
12M的晶振的機器周期是1/12M*12,就是1us

其次不同的單片機執行語句的機器周期也不一定一樣(比如:Atmel 51系列及大多數51的一個機器周期是12個時鐘周期,華邦的只需要4個時鐘周期)。不過大體來說,一條for循環大概8個機器周期,在12M晶振下,通常用以下代碼實現1ms的延時:

void delayms(unsigned int ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
大概算一下,120*8*1us=1ms,如果需要精確的定時,還是得用定時器。

如果是for (i=0;i<100;i++);的話,
那麼
大概算一下,100*8*1us=0.8ms
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved