1樓:萍水e相逢
去掉 怎麼行呢?
那就 語法 不通
祝你順利
2樓:悉曉楓
在這裡實際是一點作用都沒有的,cpu執行到這裡for(j=0;j<125;j++)的時候在是不停的做迴圈,因為是一條空語句,所以cpu視它不存在,不會執行的;但如果在for(j=0;j<125;j++)加了類似對變數賦值的語句後效果就完全不一樣了,本人以前還就這個問題專門在keil裡面做了測試。你在你的問題都知道它是空語句了,相信你對這個問題理解不難。
在c語言中,如何你想要把那個空語句去掉,你務必在for(j=0;j<125;j++)後面加上「;」,否則語法就會出現錯誤!
求指教微控制器c語言延時程式
3樓:邴悅
for延時萬用,但佔資源,樓上們講的很全了。推薦定時器延時,時間比較準而且延時的時候能幹別的事,或者用外部的時鐘晶片計時。
4樓:匿名使用者
微控制器裡沒有萬用的延時函式吧,最簡單的
for(i=0;i<100;i++);這就是一個能延時的for迴圈(注意最後的分號),
要明白延時的原理,就讓微控制器一直做一件事,如上邊的就是一直執行這個語句直到i=99,
只要明白這個,其他的延時就不難啦,可以使用迴圈巢狀實現更長的延時,不僅僅可以使用for語句,while語句也同樣可以
5樓:風雨人生
void delay( uchar z) //約1ms延時函式 }
請教關於微控制器c語言中用while延時的問題
6樓:匿名使用者
延時一次為一次機器週期,但是如果要準確的話,建議用keil去debug,將你需要的週期設定,1ms,1us等,以後只需要呼叫
7樓:
首先延時函式一般採用for迴圈巢狀實現,而它們的轉化關係。你必須51指令中的時鐘週期、狀態週期、機器週期概念。c中的迴圈減其實就是彙編中的djnz指令,你先了解此指令在51中的執行週期。
在進行換算即可。
8樓:煙火夜空
晶振頻率fosc=12mhz,則機械週期 t=12/fosc=1us;程式中 的 自加(++)、自減(--) 的執行週期為1個機械週期,即1us;
若為 理想狀態,則delay(500000)的時間應該是:500000×1us=500ms;
但是,編譯軟體 要把 函式呼叫、for 語句轉換成 機器指令,這是需要一定週期的,週期長短 視不同的編譯軟體 而有所不同,目前也沒人對這個 轉換差別 做過 專業的考量,故lz 的問題,沒有確切 的答案,只能 是告訴 你,大於某個時間;如例子 的答案是 大於 500ms,但大到什麼程度,不知道,不過可以從 軟體中 單步除錯 中 得到。
微控制器用c語言編寫時,這個延遲函式怎麼理解?
9樓:匿名使用者
i是個變數,你可以填你想要的時間;
首先是下面一個for迴圈,迴圈i次,然後上面的for迴圈的z+1; 下面的or迴圈,再迴圈i次,z再+1
如此z+到100
最後的結果是迴圈 100 個 i次。
10樓:直搗山寨
延遲就是「浪費」週期--等待。
從y=0開始,直到y=i,空迴圈i 次。
z與y相同。
微控制器c語言程式設計中,編一個延時約1s的語句
11樓:做而論道
雙重迴圈,共有迴圈 1000 × 1000 = 一百萬遍。
每一遍,如果是1us,才能是延時約1s。
但是,晶振是12mhz,一條彙編的指令就至少是1us,c語言的語句,就要更多。
所以至少有4、5秒,是很正常的。
12樓:匿名使用者
5樓說的很對,12m晶振進入微控制器要自動四分頻,換算成機器週期是0.33us,一個for語句的時間大概是9s左右,一百萬遍需要9s左右
13樓:匿名使用者
不同的晶振,其延時語句並不一樣
最佳的做法是使用定時器
51微控制器中跟定時器相關的控制器主要是4個,分別為ie暫存器,用於控制定時器中斷開關
tmod暫存器用於選擇定時器工作方式
th0和tl0用於存放微控制器初始值
ea=1;
tmod=0x01;選擇工作方式1
th0=(65535-1000)/256;
tl0=(65535-1000)%256;
然後在中斷服務函式裡面進行判斷即可。
14樓:匿名使用者
給你打個比方:法拉利能跑300碼,但是在山路上連30碼都跑不了。
對於你這個延時函式對於一個型號的微控制器得看晶振頻率,晶振越大延時就會不到1秒。
反之你的晶振越小,延時就會加長。
所以說來說去就是你晶振與這個延時函式所對應的晶振不一樣。
15樓:端菡
看晶振設定是否相同。
16樓:匿名使用者
波特率要設定的吧,有個公式的,本人新人!
求助:微控制器c語言中延時程式怎樣計算?
17樓:人生灬舞曲
軟體除錯出來的時間 也就是延時函式呼叫到呼叫結束所用的時間 通過看彙編指令計算得出 彙編指令又和機器週期掛鉤 機器週期是通過晶振頻率計算出的 晶振頻率是人為選擇的 看你自己
18樓:做而論道
軟體的延時時間,取決於晶振頻率。
c 語言的執行時間,並沒有計算公式。
只能實驗,觀察結果。
求助微控制器c語言程式問題,求助 微控制器C語言程式問題
第一個是在主程式中設定的定時計數器中斷相關引數設定,tmod 0x10 設定定時計數器的工作方式為方式1 16為計數器 也就是計數範圍為 0 65536 th1 65536 200 256 tl1 65536 200 256 設定計數器的初值為 200.ea 1 開總中斷,et1 1 開定時計數器1...
簡單的微控制器程式求助(c語言)
這是4 4的矩陣鍵盤的程式,8位數碼管依次顯示按下的鍵碼的,希望對你有用!我不懂可以hi我 include include code unsigned char table 共陰數碼管 0 9 空 code unsigned char key tab 17 unsigned char l tmpda...
微控制器C語言程式設計,微控制器C語言程式設計題
按你的程式的結構,不做大的變動,又能理解的方法 四個程式合併成一個,當然就只能有一個主程式了,一個while 1 了,凡是while 1 以上的程式只保留一個就行了。四個程式的while 1 以下的都合併寫在一個while 1 下面,分為四段。有四個按鍵,判斷按鍵被按下的程式會寫吧?那判斷每個按鍵的...