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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

定時(shí)器中斷的計(jì)時(shí)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:135253 發(fā)表于 2017-9-24 19:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
定時(shí)器中斷的計(jì)時(shí)問題
前些天看到一個(gè)定時(shí)器中斷的計(jì)時(shí)問題,那里面采用的答案似乎是,中斷執(zhí)行以后才開始再次計(jì)時(shí),對此不敢茍同,考慮以下程序,0.1秒表計(jì)時(shí)
#include<reg52.h>

unsignedchar code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
unsignedchar code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedchar miao=0;

voidDelayUs2x(unsigned char t)//大致延時(shí)(2*t+5)us

{  
    while(--t);
}

voidDelayMs(unsigned int t)//大致延時(shí)1mS

{   
    while(t--)
    {         
         DelayUs2x(245);
         DelayUs2x(245);
    }
}


/*------------------------------------------------
顯示函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管
------------------------------------------------*/
voidDisplay(unsigned char dat)
{
    P1=0xff;
    P0=DuanMa[dat%10];
    P1=0x7f;
    DelayMs(3);

    P1=0xff;
    P0=DuanMa[(dat/10)%10]|0x80;
    P1=0xbf;
    DelayMs(3);

    P1=0xff;
    P0=DuanMa[(dat/100)%10];
    P1=0xdf;
    DelayMs(3);

}

/*------------------------------------------------
                  主函數(shù)

------------------------------------------------*/
voidmain (void)
{        
    TMOD |= 0x01;                              
    TH0=(65536-2000)/256;                 
    TL0=(65536-2000)%256;   //2ms定時(shí)

    EA=1;            
    ET0=1;         
    TR0=1;                             

    while (1)        
    {         
         Display(miao);
    }
}



/*------------------------------------------------
                定時(shí)器中斷子程序

------------------------------------------------*/
voidTimer0_isr(void) interrupt 1
{
    static unsigned char count=0;
    TH0=(65536-2000)/256;                 //重新賦值 2ms

    TL0=(65536-2000)%256;
    count++;
    if(count==50)
    {
          miao++;
          count=0;
    }
//    DelayMs(1);   
}

1:定時(shí)器是2MS定時(shí),中斷里面的 延時(shí)1ms DelayMs(1),去掉與加上,對計(jì)時(shí)沒有影響
2:將中斷程序改成
voidTimer0_isr(void) interrupt 1
{
    static unsigned char count=0;
   
    count++;
    if(count==50)
    {
          miao++;
          count=0;
    }
    DelayMs(1);   
TH0=(65536-2000)/256;                 //重新賦值 2ms

    TL0=(65536-2000)%256;
}
影響結(jié)果很大!
為了再次驗(yàn)證樓主的想法,干脆將中斷程序改為
voidTimer0_isr(void) interrupt 1
{
    static unsigned char count=0;
    //TH0=(65536-2000)/256;                 //重新賦值 2ms

    //TL0=(65536-2000)%256;
    count++;
    if(count==50)
    {
          miao++;
          count=0;
    }
    DelayMs(1);   
}
去掉重新賦值,計(jì)時(shí)依然,但是慢了許多!
結(jié)論:
1:定時(shí)計(jì)數(shù)滿了以后,模式1就是到達(dá)65536,溢出標(biāo)志TF0在進(jìn)入中斷服務(wù)程序后,自動(dòng)清零,開始下一次中斷計(jì)時(shí),計(jì)時(shí)是從中斷服務(wù)程序的第一條語句開始

2:正因?yàn)?,所以進(jìn)入中斷后,首先是給定時(shí)器賦值,否則其從0開始計(jì)時(shí),所以賦值的位置不對,結(jié)果差異很大

3:在中斷服務(wù)程序中是不會(huì)再次進(jìn)入此中斷,上面DelayMs(1)延時(shí)1MS沒有影響,但是一旦改成延時(shí)2ms,結(jié)果就亂了套,因此中斷服務(wù)的運(yùn)行時(shí)間不能超過定時(shí)器的定時(shí)時(shí)間,除非關(guān)閉中斷,最后再開啟中斷

以上是個(gè)人想法!

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:135253 發(fā)表于 2017-9-24 19:30 | 只看該作者
從上面可以看出,使用定時(shí)器定時(shí)也會(huì)有誤差,誤差的來源是:1主程序任務(wù)的保存時(shí)間,2是定時(shí)器初值的賦值時(shí)間
回復(fù)

使用道具 舉報(bào)

板凳
ID:7485 發(fā)表于 2017-9-25 20:09 | 只看該作者
65535+1=0
65535=0xffff
0xffff+1=0x10000
由于只有16位,只能顯示0x0000.

定時(shí)器根據(jù)需要設(shè)置初值,初值+延時(shí)時(shí)間=65535,如果不重新裝載初值,就會(huì)從零開始。

重裝初值應(yīng)在中斷函數(shù)的最前面,如果延時(shí)1ms再裝初值,每次中斷就會(huì)延長1ms。
回復(fù)

使用道具 舉報(bào)

地板
ID:446775 發(fā)表于 2020-6-30 16:04 | 只看該作者
您好,我現(xiàn)在有個(gè)程序,定時(shí)器設(shè)置的定時(shí)時(shí)間是1ms,中斷服務(wù)的運(yùn)行時(shí)間是570us,沒有超過定時(shí)時(shí)間,但是實(shí)際運(yùn)行時(shí)發(fā)現(xiàn)沒有按照設(shè)定的定時(shí)時(shí)間進(jìn)入中斷,它自己70ms進(jìn)入一次中斷,目前不知道是什么原因造成的
回復(fù)

使用道具 舉報(bào)

5#
ID:793975 發(fā)表于 2020-6-30 16:29 | 只看該作者
很好,一下就說中了要點(diǎn)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品一区二区色综合朱莉 | 91一区二区三区在线观看 | 国产精品美女久久久 | 免费国产精品久久久久久 | 欧美日韩一区二区三区四区 | 成人免费黄色片 | 国产视频一区二区在线观看 | 五十女人一级毛片 | 国产一区二区视频在线 | 天天色天天色 | 亚洲天堂精品久久 | 美女在线视频一区二区三区 | 亚洲国产福利视频 | 亚洲精品电影在线观看 | 欧美小视频在线观看 | 国产一级影片 | 一区二区三区久久久 | 久国产视频 | 欧日韩在线观看 | 日韩三级在线 | 久久婷婷av | 日韩久久久久 | 草草影院ccyy | 久久久久久久国产 | 久久三级影院 | 免费在线视频a | 国产精品久久久久久妇女6080 | 一区二区三区四区在线 | 欧美日韩在线视频一区二区 | 鸡毛片| 国产日韩一区二区三区 | 成人精品一区二区 | 二区中文 | 国产精品一区二区三区四区 | 午夜视频一区二区 | 欧美日韩精品亚洲 | 黄片毛片| 91精品国产高清一区二区三区 | 久久亚洲精品国产精品紫薇 | 日韩中文在线 | 国产高清一区二区三区 |