久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3114|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)的幾種精確延時

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:827139 發(fā)表于 2020-10-13 11:22 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
實(shí)現(xiàn)延時通常有兩種方法:一種是硬件延時,要用到定時器/計(jì)數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟件延時,這種方法主要采用循環(huán)體進(jìn)行。 今天主要介紹軟件延時,關(guān)于硬件延時,之后定時器部分再做詳細(xì)說明。
首先介紹單片機(jī)的幾個周期
在電子技術(shù)中,脈沖信號是一個按一定電壓幅度,一定時間間隔連續(xù)發(fā)出的脈沖信號。脈沖信號之間的時間間隔稱為周期;而將在單位時間(如1秒)內(nèi)所產(chǎn)生的脈沖個數(shù)稱為頻率。頻率是描述周期性循環(huán)信號(包括脈沖信號)在單位時間內(nèi)所出現(xiàn)的脈沖數(shù)量多少的計(jì)量名稱;頻率的標(biāo)準(zhǔn)計(jì)量單位是Hz(赫)。電腦中的系統(tǒng)時鐘就是一個典型的頻率相當(dāng)精確和穩(wěn)定的脈沖信號發(fā)生器。
指令周期:CPU執(zhí)行一條指令所需要的時間稱為指令周期,它是以機(jī)器周期為單位的,指令不同,所需的機(jī)器周期也不同。對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機(jī)器周期。對于一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個或者兩個以上的機(jī)器周期。通常含一個機(jī)器周期的指令稱為單周期指令,包含兩個機(jī)器周期的指令稱為雙周期指令。
時鐘周期:也稱為振蕩周期,一個時鐘周期 = 晶振的倒數(shù)。對于單片機(jī)時鐘周期,時鐘周期是單片機(jī)的基本時間單位,兩個振蕩周期(時鐘周期)組成一個狀態(tài)周期。
機(jī)器周期:單片機(jī)的基本操作周期,在一個操作周期內(nèi),單片機(jī)完成一項(xiàng)基本操作,如取指令、存儲器讀/寫等。
機(jī)器周期=6個狀態(tài)周期=12個時鐘周期。
51單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個單周期指令包含一個機(jī)器周期,即12個時鐘周期,所以一條單周期指令被執(zhí)行所占時間為12*(1/ 晶振頻率)= x μs。常用單片機(jī)的晶振為11.0592MHz,12MHz,24MHz。其中11.0592MHz的晶振更容易產(chǎn)生各種標(biāo)準(zhǔn)的波特率,后兩種的一個機(jī)器周期分別為1 μs和2 μs,便于精確延時。
接下來列出這三種不同的晶振的延時函數(shù)
1、 11.0592MHz
//N ms延時
void delay_ms(uint n)
{
uint i,j;
for(i=n;i>0;i–)
for(y=114;y>0;y–);
}
2、12MHz晶振
//延時n毫秒void delay_ms(unsigned int n)
{
    unsigned int i=0,j=0;
    for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}
//延時n秒void delay_m(unsigned int n)
{
    unsigned int i=0,j=0;
    for(i=0;i<n;i++)
        for(j=0;j<21738;j++);
}
//延時10*n微秒void delay_10um(unsigned int n)
{
    while(n--);
}
3、24MHz晶振
//延時n毫秒
void delay_ms(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i
//延時n秒  void delay_s(unsigned int n)  
{  
    unsigned int i=0,j=0;  
    for(i=0;i<n;i++)  
        for(j=0;j<54053;j++);   
}  
//延時10*n微秒  void delay_10us(unsigned int n)  
{  
    unsigned int i=0;  
    char j=0;  
    for(i=0;i<n;i++)  
        for(j=0;j<2;j++);  
}  
建議大家封裝為頭文件,可以方便的調(diào)用。
接下來介紹幾個自動適應(yīng)主時鐘的延時函數(shù)
//參數(shù):ms,要延時的ms數(shù),自動適應(yīng)主時鐘  #define MAIN_Fosc        11059200UL    //定義主時鐘HZ  typedef unsigned int INT16U;  
void delay_ms(INT16U ms)    //INT16U 等價(jià)于 unsigned int  
{  
    INT16U i;  
    do{  
        i=MAIN_Fosc/9600;  
        while(--i);     //96T per loop  
    }while(--ms);       //--ms  ms=ms-1  
}  
//5us 延時函數(shù),自動適應(yīng)主時鐘  #define MAIN_Fosc        11059200UL    //定義主時鐘HZ  
void delay5us()  
{  
    #if MAIN_Fosc == 11059200  
        _nop_();  
    #elif MAIN_Fosc == 12000000  
        _nop_();  
    #elif MAIN_Fosc == 22118400  
        _nop_(); _nop_(); _nop_();  
    #elif  
}  
單片機(jī)中還可自動生成
//11.0592MHZ延時100微秒
void Delay100us()       //@11.0592MHz
{
    unsigned char i, j;
    _nop_();
    _nop_();
    i = 2;
    j = 15;
    do
    {
        while (--j);
    } while (--i);
}
//100US
void Delay100us()       //@12.000MHz
{
    unsigned char i, j;
    i = 2;
    j = 39;
    do
    {
        while (--j);
    } while (--i);
}
//100US
void Delay100us()       //@24.000MHz
{
    unsigned char i, j;
    i = 3;
    j = 82;
    do
    {
        while (--j);
    } while (--i);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:828768 發(fā)表于 2020-10-15 08:49 | 只看該作者
謝謝樓主的分享。如果能結(jié)合振晶頻率在代碼中再注釋一下時延的計(jì)算過程,就更利于小白學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:831065 發(fā)表于 2020-10-17 16:56 | 只看該作者
樓主 我還有點(diǎn)不懂的地方可以求解嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:135950 發(fā)表于 2020-10-19 10:53 | 只看該作者
好東西收藏起來先。。。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产综合精品一区二区三区 | 九九精品影院 | 久久亚洲二区 | 精品av | 91精品国产91久久综合桃花 | 日本精品一区二区三区视频 | 精品久久av | 欧美精品久久久 | 国产激情视频网 | 久久国产欧美一区二区三区精品 | 久久久久国产一区二区三区四区 | 日本精品一区二区三区视频 | 久久久激情 | 一级黄色毛片a | 欧美日韩久久精品 | 国产高清精品在线 | 超碰520 | 一级做a爰片性色毛片视频停止 | 日韩欧美三级电影在线观看 | 久久久精 | 日韩欧美在线观看 | 欧美成人一区二区三区片免费 | 人人爽日日躁夜夜躁尤物 | 国内精品久久久久久 | 国产成人精品一区二区三区在线观看 | av中文网| 久久一区二区三区免费 | 午夜影院在线播放 | 精品中文字幕视频 | 日韩av在线一区二区 | 免费高清av| aⅴ色国产 欧美 | 一区二区三区久久久 | 三级黄片毛片 | 亚洲成人毛片 | 成人免费淫片aa视频免费 | a在线视频| 午夜视频一区二区 | av国产精品 | 播放一级毛片 | 四虎影院一区二区 |