欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5375|回復: 12
收起左側

c語言算時間 for延時,怎么算時間?for(i=;;)

  [復制鏈接]
ID:711481 發表于 2020-7-6 14:32 來自觸屏版 | 顯示全部樓層 |閱讀模式
如題
回復

使用道具 舉報

ID:97554 發表于 2020-7-6 19:04 | 顯示全部樓層
void Delay(unsigned int a)//0~65535
{
unsigned char b;for(;a>0;a--)
{
for
(b=110;b>0;b--);         }
}


比如上邊這樣一個延時程序,
void Delay(unsigned int a)//0~65535   這里邊的unsigned int是無符號整數的意思,也就是a的取值范圍是0-65535
那么就可以按照需要在函數里寫void Delay(3)這樣的數字,這個數字的作用下邊說。
unsigned char b;這句是定義個無符號字符型的數字b
for(;a>0;a--)   這句,沒有寫a=幾這個初始值,因為是在上邊void Delay(unsigned int a)括號里給的,這里只要a比0大,那就-1,直到減到a=0
接下來的
for
(b=110;b>0;b--);
也是一樣的但是他在a-1的函數里,他是先給b個值110,然后只要b比0大,就做b-1的運算,直到a=0,于是上邊的程序就是
不斷的進行這樣的計算:
先看看a等不等于0,不等于那就a-1
然后
b-1=110   110-1=109    109-1= 108
一直這樣減到b=0也就是原地做了110次減法,單片機在這里運行110個周期,
然后b=0了又回去看a的值,
假如void Delay(unsigned int a) 這里a取值500  

在主程序里延時子函數寫作:
void main(){
        while(1)
        {
                LED1=0;//點亮
                Delay(500);
                LED1=1;
                Delay(500);
        }
};


那就是讓單片機做500次的110-1-1-1-1-1-1減到0的運算,
那么也就是機器自己原地玩了500  ×  110 = 55000次,
如果單片機是12M的晶振,那單片機每秒鐘運行12M次,用這12M次除以55000次,就可以計算出他原地計算這么多次用的時間,也就是這個延時函數所能延遲的時間。

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:504443 發表于 2020-7-6 15:10 | 顯示全部樓層
利用STC下載軟件,那里面有個功能是計算時間的
回復

使用道具 舉報

ID:277948 發表于 2020-7-6 15:20 | 顯示全部樓層
先把機器周期,時鐘周期,指令周期看一下
回復

使用道具 舉報

ID:452950 發表于 2020-7-6 15:20 | 顯示全部樓層
可以用這個軟件計算

單片機延時計算工具.zip

1.2 MB, 下載次數: 19

回復

使用道具 舉報

ID:332444 發表于 2020-7-6 15:21 | 顯示全部樓層
這種延時只適用于不精確的有一定范圍內可用的,精確的延時要使用計數器中斷。
回復

使用道具 舉報

ID:332444 發表于 2020-7-6 15:23 | 顯示全部樓層
比如說數碼管和點陣的延時可在255-100之間計數延時都沒問題,甚至更大范圍都適用的路474-47這樣的范圍而不受影響的延時。
回復

使用道具 舉報

ID:592807 發表于 2020-7-6 16:07 | 顯示全部樓層
這種for循環一般只算大概時間,精確時間一般用定時器
回復

使用道具 舉報

ID:798531 發表于 2020-7-6 16:48 | 顯示全部樓層
For循環只能計算一個基于時間周期的大概時間,一般用定時器會更好一點
回復

使用道具 舉報

ID:282850 發表于 2020-7-7 09:48 | 顯示全部樓層
手工計算的我一般不太自信,都是延時閃燈多次,用表計秒,來的真實可靠。
特別對于多時鐘的芯片,ACLK、SMCLK、MCLK等再加倍頻、分頻,各不同,實測計時我常用。
回復

使用道具 舉報

ID:775776 發表于 2020-7-7 10:00 | 顯示全部樓層
12M的晶振的bai機器周期是1/12M*12,就是1us ,51的一個for循環大概是8個機器周期,也就是0.66us。
回復

使用道具 舉報

ID:453334 發表于 2020-7-9 10:29 | 顯示全部樓層
晶振頻率是11.05926的話
回復

使用道具 舉報

ID:453334 發表于 2020-7-9 10:30 | 顯示全部樓層
void delay(uint z){}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表