找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4399|回復(fù): 8
收起左側(cè)

MCU C語言延時函數(shù){while(i--);}當(dāng)i=1時為什麼等于10us?

[復(fù)制鏈接]
ID:468169 發(fā)表于 2021-4-29 23:16 來自觸屏版 | 顯示全部樓層 |閱讀模式
50黑幣
晶振12M,  void delay(u16i)
{while(i--);}當(dāng)i=1時為什麼等於10us?

回復(fù)

使用道具 舉報

ID:468169 發(fā)表于 2021-4-29 23:17 來自觸屏版 | 顯示全部樓層
說錯了,晶振是12M,不是15M.
回復(fù)

使用道具 舉報

ID:643071 發(fā)表于 2021-4-29 23:40 | 顯示全部樓層
這個和晶振的頻率有關(guān)系
回復(fù)

使用道具 舉報

ID:383215 發(fā)表于 2021-4-29 23:56 | 顯示全部樓層
什么單片機?編譯級別是什么?任何延時函數(shù)不同單片機的不同晶體不同編譯級別的時間都不一樣,想知道為什么只有看對應(yīng)的匯編代碼就清楚了。
回復(fù)

使用道具 舉報

ID:506248 發(fā)表于 2021-4-30 00:33 | 顯示全部樓層
使用不同的芯片會用到不同的指令集,同一條指令運行所需的時鐘周期也是不一樣的,即便源代碼完全一樣生成的hex文件也一樣的情況下,使用不同的單片機芯片使用完全相同的延時函數(shù),具體的延時時間也會有差別的。以STC單片機為例,他的指令集就分Y1,Y3,Y5,Y6四種,我們常用的STC89C52RC采用的就是Y1指令集,而STC8F1K08采用的就是Y6指令集。以同樣的一條指令NOP為例 STC89C52RC需要12個時鐘周期  而STC8F1K08只需要1個時鐘周期,這四種指令集速度是不一樣的。所以樓主問的當(dāng)i=1時為什麼等于10us? 真的沒法說,因為不知道你指的是什么型號的單片機。你必須說出你的型號,才好針對具體問題具體分析。
以下附圖說明各個指令集所需時鐘周期(詳情請看STC-ISP軟件,截圖只是其中一部分,說明相同指令在不同指令集下所需時鐘周期是不一樣的)


3.png

STC89C52RC采用的是Y1指令集,他的延時函數(shù) i=1是延時7us  真找不到你說的 10us的,這里還多執(zhí)行了一個i=1呢,想一想什么芯片比STC89C52RC
還慢呢?想不出來��!
4.png
回復(fù)

使用道具 舉報

ID:912803 發(fā)表于 2021-4-30 06:05 | 顯示全部樓層

           while(i--);
C:0x0090    EF       MOV      A,R7
C:0x0091    1F       DEC      R7
C:0x0092    AC06     MOV      R4,0x06
C:0x0094    7001     JNZ      C:0097
C:0x0096    1E       DEC      R6
C:0x0097    4C       ORL      A,R4
C:0x0098    70F6     JNZ      delay(C:0090)

因為你的單片機是12T的,也就是說12個時間周期才運行一個機器周期,
而一到三個機器周期為運行一個匯報代碼,(詳情請看單片機精靈)
延時函數(shù)由7個匯編代碼組成(9us),加上跳轉(zhuǎn)函數(shù)是8個(1us)
回復(fù)

使用道具 舉報

ID:879348 發(fā)表于 2021-4-30 08:01 | 顯示全部樓層
因為你用的單片機太弱了,調(diào)用函數(shù)2us,while需要2us,,i--要1us,退出返回需要2us
回復(fù)

使用道具 舉報

ID:297320 發(fā)表于 2021-4-30 10:53 | 顯示全部樓層
keil里面設(shè)置好晶振頻率,debug一下,看看時間就知道了。延時的長短和你的單片機芯片選取有關(guān)。
回復(fù)

使用道具 舉報

ID:468169 發(fā)表于 2021-4-30 13:12 來自觸屏版 | 顯示全部樓層
kmsj 發(fā)表于 2021-4-29 23:56
什么單片機?編譯級別是什么?任何延時函數(shù)不同單片機的不同晶體不同編譯級別的時間都不一樣,想知道為什么 ...

STC89C52RC
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表