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

標題: MCU應該如何實現一個毫秒級的延時函數? [打印本頁]

作者: 123456czst    時間: 2020-11-3 20:21
標題: MCU應該如何實現一個毫秒級的延時函數?
大佬們,就是特別想知道你們是咋樣弄出一個毫秒級的函數,通過while或者是for循環得到的,能否寫的明白一點

作者: cheney03    時間: 2020-11-4 08:48
延時時間跟晶振有關,
void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        i = 2;
        j = 199;
        do
        {
                while (--j);
        } while (--i);
}

要精確延時需用到定時器
作者: TTQ001    時間: 2020-11-4 09:06
通常可以使用單片機庫的delay子例程。
作者: cheney03    時間: 2020-11-4 09:13
cheney03 發表于 2020-11-4 08:48
延時時間跟晶振有關,
void Delay1ms()                //@11.0592MHz
{

for 循環實現:
void MainDelayMs(unsigned int ms)          //@11.0592MHz
{
        unsigned int  i,j;
        for(i=ms;i>0;i--)
    {
            for(j=500;j>0;j--){}
    }               
}

作者: Y_G_G    時間: 2020-11-4 11:51
只要是循環,都是一樣的
毫秒級隨便就可以的了
如果是STC單片機,直接在下載器那復制就可以了,不同型號的單片機要有不同的選擇想要微秒級的,就用匯編



作者: 鄭漢松    時間: 2020-11-4 12:50
用STC官方的ISP下載器,可以根據你的單片機型號和晶振生成任意延時時間的函數程序
作者: 123456czst    時間: 2020-11-4 15:45
哦,謝謝大佬們了

作者: zmc419    時間: 2020-11-4 17:30
循環嵌套就行,但不建議用。定時器加標志變量更好。
作者: 123456czst    時間: 2020-11-5 08:44
那定時器不夠用咋辦??定時器就那么幾個,有限的很
作者: Y_G_G    時間: 2020-11-5 09:18
123456czst 發表于 2020-11-5 08:44
那定時器不夠用咋辦??定時器就那么幾個,有限的很

在很多情況下,定時器雖然叫""定時"",但很少是用定時器來延時的,它的作用是定時器中斷,這才是它的核心
也就是說每過一個時間要做一件事,而且這件事的等級是最高的(可以設定),不管單片機在做什么,都會先停下來,進入中斷
或者是外部觸發事件之類的,像是測量一個脈沖的長度,這個脈沖隨時會來的那種,這就要用到定時器中斷,嚴格叫捕捉,你學到了就會知道了
至于延時,函數就可以了




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