找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1806|回復(fù): 4
收起左側(cè)

這個(gè)單片機(jī)延時(shí)是怎么算的?求解答

[復(fù)制鏈接]
ID:305703 發(fā)表于 2018-5-6 10:17 | 顯示全部樓層 |閱讀模式
void delay(unsigned int i)        //1ms基準(zhǔn)延時(shí)程序
{
   unsigned char j;
   while(i--)
   {
         for(j=0;j<115;j++)         
         {
          ;
         }
   }
}
為什么是1ms的延時(shí)程序呢 單片機(jī)為STC51

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-5-6 14:52 | 顯示全部樓層
你可以用這個(gè)方法來(lái)確定延時(shí)時(shí)間:http://www.torrancerestoration.com/bbs/dpj-4711-1.html
回復(fù)

使用道具 舉報(bào)

ID:323339 發(fā)表于 2018-5-6 11:51 | 顯示全部樓層
把一個(gè)空語(yǔ)句執(zhí)行大概115次,時(shí)間差不多是1ms,這得看你一次執(zhí)行時(shí)間是多少

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:287575 發(fā)表于 2018-5-6 13:36 | 顯示全部樓層
你用keil把它編譯完后,找到對(duì)應(yīng)的匯編程序,把運(yùn)行的指令的機(jī)器周期全部加起來(lái),就知道延時(shí)多長(zhǎng)時(shí)間了。精密計(jì)算要包含調(diào)用和返回指令

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2018-5-6 14:46 | 顯示全部樓層
如果你想直接知道答案,那么我告訴你,12MHz晶振:
void delayms(unsigned int t)
{
    unsigned int i,j;
    for(i=t;i>0;i--)
        for(j=123;j>0;j--);
}
能精確到1ms。
如果是11.0592MHz晶振,只需把上面的“j=123”改為“j=114”,都是調(diào)試過(guò)的,沒(méi)問(wèn)題。
然后你要想知道是怎么調(diào)試的,很簡(jiǎn)單,打開(kāi)uv2編程軟件,在最上邊的工具欄里邊有個(gè)“Debug”,點(diǎn)擊后出現(xiàn)下拉菜單,選擇第一個(gè)“start/stop Debug Session”,然后在最右邊有一個(gè)Watch欄,有兩個(gè)項(xiàng)目,一個(gè)是“Register”,一個(gè)是“value”,然后在“Register”欄下邊的“Sys”里邊有個(gè)“sec”,你只要單擊“Step over”運(yùn)行程序并觀察“sec”的值就能調(diào)試出你程序的執(zhí)行時(shí)間了。
注意,一定要先選擇晶振頻率,不然會(huì)默認(rèn)24MHz。
希望我的回答能幫助到你。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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