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

標題: 單片機程序怎么計算延時時間? [打印本頁]

作者: aktuan007    時間: 2022-3-15 10:24
標題: 單片機程序怎么計算延時時間?
void delay(unsigned int i)
{

        unsigned int j;
        while(i--)
        {
                for(j=0;j<0x20;j++);
        }

}
這個延時函數,while循環和for循環,延時多久啊?為什么我用keil調試算的時間和自己算的不一樣

作者: Petersoaring23    時間: 2022-3-15 11:22
這個延時,和編譯器有關系,如果是匯編的代碼,能看到指令,就能計算指令周期,準確的預計時間,你進入調試模式看看匯編代碼,應該能夠算出來
作者: 294479435    時間: 2022-3-15 11:27
這種不精確,遇到中斷就去執行中斷了
作者: Y_G_G    時間: 2022-3-15 12:50
這是C語言,C語言要先編譯成匯編才能燒錄到單片機中,不同的編譯環境,編譯成的匯編代碼是不一樣的
所以,這是沒法計算的
對于STC,最簡單省事的就是在下載器那復制
如果要精確的,那就用定時器
作者: 188610329    時間: 2022-3-15 14:08
如果你用的 是 KEIL , 選擇正確的芯片型號,以及設置了正確的晶振值之后……,

單獨寫一個 延時函數,編譯后,Ctrl + F5, 然后運行到 延時函數前,看一下 左側的 耗時 記住,然后繼續運行到 延時函數結束, 記錄左側的耗時, 減一下,就是這個函數的耗費時間,以此為依據,酌情增減。51核的盡量用  while(--i);  可以確保編譯出來時 DJNZ  那么只要看一下該芯片的 DJNZ指令的周期,就能算出確切的時間。
作者: aktuan007    時間: 2022-3-15 14:54
上面的這個延時,理論上是延時多少啊?12MHZ晶振
作者: 188610329    時間: 2022-3-15 15:26
aktuan007 發表于 2022-3-15 14:54
上面的這個延時,理論上是延時多少啊?12MHZ晶振

不能光看晶振啊, 還有單片機型號阿, 同樣這段代碼,同樣12MHz的晶振。
就說最常見的:
STC89C51, STC12C5608AD, STC15W408AS, STC8G1K08,  這4款單片機,跑出來的時間完全不一樣。
作者: aktuan007    時間: 2022-3-15 15:47
188610329 發表于 2022-3-15 15:26
不能光看晶振啊, 還有單片機型號阿, 同樣這段代碼,同樣12MHz的晶振。
就說最常見的:
STC89C51, STC ...

STC89C51的
作者: 188610329    時間: 2022-3-15 16:36
aktuan007 發表于 2022-3-15 15:47
STC89C51的

你STC為什么不直接用 ISP計算呢? 那個絕對準啊。



選擇 Y1  就是 STC89 對應時間。

作者: 188610329    時間: 2022-3-15 16:55
最后給你補充一下,延時函數,你可以多層while函數嵌套,但是絕對不能用unsigned int, 必須要用unsigned char, 不然,你時間絕對算不準。

作者: aktuan007    時間: 2022-3-15 17:59
188610329 發表于 2022-3-15 16:55
最后給你補充一下,延時函數,你可以多層while函數嵌套,但是絕對不能用unsigned int, 必須要用unsigned ch ...

感謝感謝
作者: zerotwo......    時間: 2022-3-16 11:03
單片機的延時程序通過執行指令來達到延時效果,這個時間等于執行的指令需要的時間,而一個指令需要的時間叫做指令周期,這個時間等于若干個機器周期。




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