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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3275|回復: 13
打印 上一主題 下一主題
收起左側

單片機延時函數疑問

[復制鏈接]
跳轉到指定樓層
樓主
ID:1065550 發表于 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都代表什么?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2023-4-17 15:26 | 只看該作者
具體到你的代碼,for和while循環沒有區別。i和j代表延遲時間。
回復

使用道具 舉報

板凳
ID:584814 發表于 2023-4-17 16:06 | 只看該作者
實際上這些所謂的延時就是讓系統空轉,由于不同的芯片在不同的主頻下速度不同,如果要非常精確的延時你懂的(通常用外接晶振+示波器輔助)。
兩者最直觀的區別是:for循環是先判斷后執行,do循環是先執行后判斷。
回復

使用道具 舉報

地板
ID:1065550 發表于 2023-4-18 13:04 | 只看該作者
man1234567 發表于 2023-4-17 16:06
實際上這些所謂的延時就是讓系統空轉,由于不同的芯片在不同的主頻下速度不同,如果要非常精確的延時你懂的 ...

明白了
回復

使用道具 舉報

5#
ID:1065550 發表于 2023-4-18 13:07 | 只看該作者
Hephaestus 發表于 2023-4-17 15:26
具體到你的代碼,for和while循環沒有區別。i和j代表延遲時間。

那他這個i和j怎么算出來延時1ms的呢?
回復

使用道具 舉報

6#
ID:883242 發表于 2023-4-18 13:24 | 只看該作者
Mang0 發表于 2023-4-18 13:07
那他這個i和j怎么算出來延時1ms的呢?

不用算,實測就行了。
回復

使用道具 舉報

7#
ID:291668 發表于 2023-4-18 13:46 | 只看該作者
仿真的時候看一下下邊運行時間,執行每條語句應該有時間顯示,從而估算變量的數值
回復

使用道具 舉報

8#
ID:155507 發表于 2023-4-18 14:33 | 只看該作者
毫秒級延時直接用定時器
看性能需要,性能高要求的用中斷吧,別讓他傻等,本來51性能就不好,傻等的話更沒效率了
還有硬件不同的情況,就需要重新實測了。比如晶振頻率不同,CPU內核速度不同,STC8H單片機就比STC15快了很多了比89系列快了十幾倍了。
回復

使用道具 舉報

9#
ID:1045628 發表于 2023-4-18 14:53 | 只看該作者
強制延時不可靠,不同單片機頻率不一樣這個i,j的值就會不一樣,一般可以用示波器測量翻轉的IO口來測出i,j的值,還有一個風險點,強制延時可能會被中斷干擾,精確延時應該用定時器進行延時
回復

使用道具 舉報

10#
ID:401564 發表于 2023-4-18 22:09 | 只看該作者
1,長延時不要用軟件來進行延時,要學會用定時器
2,如果是簡單程序,不想折騰,可以直接復制STC下載器的代碼,那個很準確的
3,就算是一樣品牌的單片機,就像STC,不同型號單片機之間,一樣的C代碼,延時的時間都是不一樣的
4,C語言的循環和實際的延時時間沒有什么對等的關系,不存在"怎么計算延時"這一說法,除非是單片機公司專用的編譯環境提供的延時函數,像PIC這樣的,它就有專用的延時函數
回復

使用道具 舉報

11#
ID:633522 發表于 2023-4-19 01:21 來自觸屏版 | 只看該作者
并沒有什么區別
回復

使用道具 舉報

12#
ID:10193 發表于 2023-4-19 08:59 | 只看該作者
機器周期、指令周期、時鐘周期這些了解一下,你就明白了
回復

使用道具 舉報

13#
ID:587810 發表于 2023-4-19 10:35 | 只看該作者
for是知道循環次數的情況下使用,while是不知道循環次數的情況下用,for是執行完循環繼續執行其他指令,while是不滿足循環條件才退出執行,如果滿足循環條件則一直執行循環
回復

使用道具 舉報

14#
ID:1065550 發表于 2023-4-19 15:19 | 只看該作者
謝謝各位的解答,統一表達一下謝意
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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