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

標題: 單片機延時函數疑問 [打印本頁]

作者: Mang0    時間: 2023-4-17 13:57
標題: 單片機延時函數疑問
1.void delay(uint x)           //延時函數
{
     uint i,j;
         for(i=x;i>0;i--)
            for(j=0;j<110;j++);  
}
2.void Delay(unsigned int k)                //@11.0592MHz
{
        unsigned char i, j;

for(;k>0;k--)
        i = 2;
        j = 103;
                do
                {
         while (--j);
        } while (--i);
}
想問問for循環和do循環有什么區別,下面一個是stc里面的延時函數。
同時問問為什么第二個能延時1ms?i和j都代表什么?


作者: Hephaestus    時間: 2023-4-17 15:26
具體到你的代碼,for和while循環沒有區別。i和j代表延遲時間。
作者: man1234567    時間: 2023-4-17 16:06
實際上這些所謂的延時就是讓系統空轉,由于不同的芯片在不同的主頻下速度不同,如果要非常精確的延時你懂的(通常用外接晶振+示波器輔助)。
兩者最直觀的區別是:for循環是先判斷后執行,do循環是先執行后判斷。
作者: Mang0    時間: 2023-4-18 13:04
man1234567 發表于 2023-4-17 16:06
實際上這些所謂的延時就是讓系統空轉,由于不同的芯片在不同的主頻下速度不同,如果要非常精確的延時你懂的 ...

明白了
作者: Mang0    時間: 2023-4-18 13:07
Hephaestus 發表于 2023-4-17 15:26
具體到你的代碼,for和while循環沒有區別。i和j代表延遲時間。

那他這個i和j怎么算出來延時1ms的呢?
作者: Hephaestus    時間: 2023-4-18 13:24
Mang0 發表于 2023-4-18 13:07
那他這個i和j怎么算出來延時1ms的呢?

不用算,實測就行了。
作者: li64331218    時間: 2023-4-18 13:46
仿真的時候看一下下邊運行時間,執行每條語句應該有時間顯示,從而估算變量的數值
作者: angmall    時間: 2023-4-18 14:33
毫秒級延時直接用定時器
看性能需要,性能高要求的用中斷吧,別讓他傻等,本來51性能就不好,傻等的話更沒效率了
還有硬件不同的情況,就需要重新實測了。比如晶振頻率不同,CPU內核速度不同,STC8H單片機就比STC15快了很多了比89系列快了十幾倍了。
作者: rctty    時間: 2023-4-18 14:53
強制延時不可靠,不同單片機頻率不一樣這個i,j的值就會不一樣,一般可以用示波器測量翻轉的IO口來測出i,j的值,還有一個風險點,強制延時可能會被中斷干擾,精確延時應該用定時器進行延時
作者: Y_G_G    時間: 2023-4-18 22:09
1,長延時不要用軟件來進行延時,要學會用定時器
2,如果是簡單程序,不想折騰,可以直接復制STC下載器的代碼,那個很準確的
3,就算是一樣品牌的單片機,就像STC,不同型號單片機之間,一樣的C代碼,延時的時間都是不一樣的
4,C語言的循環和實際的延時時間沒有什么對等的關系,不存在"怎么計算延時"這一說法,除非是單片機公司專用的編譯環境提供的延時函數,像PIC這樣的,它就有專用的延時函數
作者: 楊廣老賊    時間: 2023-4-19 01:21
并沒有什么區別
作者: gb302    時間: 2023-4-19 08:59
機器周期、指令周期、時鐘周期這些了解一下,你就明白了
作者: ankangyu    時間: 2023-4-19 10:35
for是知道循環次數的情況下使用,while是不知道循環次數的情況下用,for是執行完循環繼續執行其他指令,while是不滿足循環條件才退出執行,如果滿足循環條件則一直執行循環
作者: Mang0    時間: 2023-4-19 15:19
謝謝各位的解答,統一表達一下謝意




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1