標(biāo)題: 看不懂毫秒的單片機(jī)延時(shí)程序,為什么不能這樣(我的想法) [打印本頁]

作者: ylthpl    時(shí)間: 2023-2-10 11:30
標(biāo)題: 看不懂毫秒的單片機(jī)延時(shí)程序,為什么不能這樣(我的想法)
void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--);
        for(j=110;j>0;j--);
}
我的想法:
void delay_ms(u16 ms)
{
while(us--);
}


作者: ylthpl    時(shí)間: 2023-2-10 11:31

void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--);
        for(j=110;j>0;j--);
}
我的想法:
void delay_ms(u16 ms)
{
while(ms--);
}

作者: a185980800    時(shí)間: 2023-2-10 12:19
這到微秒級(jí)了
作者: ldc2000    時(shí)間: 2023-2-10 12:53
ylthpl 發(fā)表于 2023-2-10 11:31
void delay_ms(u16 ms)
{
        u16 i,j;

那個(gè)U16你要是定義成長(zhǎng)整型到是可以。
不考慮浪費(fèi)資源和每次延時(shí)都得敲一堆數(shù)字的話,而且你這里的MS代表微秒
作者: munuc_w    時(shí)間: 2023-2-10 14:29
軟件延時(shí)是不準(zhǔn)的,是根據(jù)執(zhí)行的指令周期計(jì)算延時(shí)時(shí)間,這要看編譯后的匯編指令。
作者: yxtao    時(shí)間: 2023-2-10 15:52
這種延時(shí)是要看硬件來估算的,j=110那行本就是估算的結(jié)果,你寫的那個(gè)估算這一步都沒有,單片機(jī)咋知道你要延時(shí)多久

作者: 最后一個(gè)夏天1    時(shí)間: 2023-2-10 16:28
因?yàn)槟鞘擒浖訒r(shí),人家那是通過計(jì)算次才得出來的,傳入?yún)?shù)就可以得到粗略的延時(shí)。你的想法只是單純延時(shí)
作者: Hephaestus    時(shí)間: 2023-2-10 16:55
沒人發(fā)現(xiàn)第一個(gè)for語句后面多寫了一個(gè);導(dǎo)致延遲根本就不對(duì)嗎?
作者: coody_sz    時(shí)間: 2023-2-10 22:02
樓主不理解一個(gè)循環(huán)的時(shí)間。
作者: hjc5035    時(shí)間: 2023-2-11 09:41


void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--)                                                   //;
        for(j=110;j>0;j--);
}

這才是ms毫秒的延時(shí)
這個(gè)延時(shí)是不是很精確取決于編譯器將C語言轉(zhuǎn)換成匯編后的匯編語言情況,還有時(shí)鐘精確度,晶振一般精度高,RC精度要低。
作者: Marconi工作室    時(shí)間: 2023-2-11 18:44
可以,數(shù)據(jù)有范圍的
作者: qsssuv    時(shí)間: 2023-2-11 19:41
不是說變量取名叫ms,它減1就真的是過去1ms了,哈哈
作者: cheney03    時(shí)間: 2023-2-13 09:28

void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--);
        for(j=110;j>0;j--);
}
這個(gè)是軟件延時(shí),要根據(jù)MCU的時(shí)機(jī)器周期計(jì)算。
u16的范圍是0~65535,若ms為1ms,則最大可延時(shí)0~65535ms。
void delay_ms(u16 ms)
{
while(us--);
}
這個(gè)程序也有錯(cuò),兩個(gè)參數(shù)ms,us。若us為1us,則最大可延時(shí)0~65535us。
延時(shí)時(shí)間大于66ms,這個(gè)程序就不通用了,第一個(gè)程序也便于理解
精確延時(shí)請(qǐng)用定時(shí)器
作者: ankangyu    時(shí)間: 2023-2-17 14:02
機(jī)械延時(shí),兩個(gè)for嵌套更精準(zhǔn)。
作者: ylthpl    時(shí)間: 2023-3-4 16:48
你們都好厲害我應(yīng)該懂了




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