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

標(biāo)題: 51單片機(jī)關(guān)閉中斷再打開中斷下次還會(huì)進(jìn)入中斷嗎(附程序) [打印本頁(yè)]

作者: gguo2    時(shí)間: 2018-10-13 09:09
標(biāo)題: 51單片機(jī)關(guān)閉中斷再打開中斷下次還會(huì)進(jìn)入中斷嗎(附程序)
本帖最后由 gguo2 于 2018-10-13 09:10 編輯

外部下降沿觸發(fā)中斷,進(jìn)入中斷后EA=0關(guān)閉中斷,while 語(yǔ)句執(zhí)行完后再EA=1 打開中斷。
請(qǐng)問(wèn)下次再出現(xiàn)下降沿的時(shí)候還能進(jìn)入這個(gè)中斷程序嗎?我目的是每發(fā)生一次下降沿,執(zhí)行一次這個(gè)中斷內(nèi)部的函數(shù)。

void main()
{
        
  TMOD=0x01; // Timer mode 1
        TR0=1;     // Timer 0 enable
        TR1=1;     // Timer 1 enable
        
        
        IT0=1;  // Falling edge trigger
        EX0=1;  // External interrupt 0 enable
        EA=1;   // Master switch enable
        
        while (1)        ;
                        
}        

void EXINT0() interrupt 0         //0 stands for external interrupt 0
{
        EA=0;
       TH1=0xB1;
       TL1=0xEC;
        cnt=0;
        
      while (cnt<=100)
        {
         P1=0xE3;
         Delay10ms();
               
         P1=0xF3;
         Delay10ms();               

                if (TF1 == 1)
                {
                  TF1=0;
                  TH1=0xB1;
                        TL1=0xE0;
                        cnt++;
                }
        }
        EA=1;
        
}


作者: sxhwdz    時(shí)間: 2018-10-13 10:59
只要中斷是打開的,每次下降沿都會(huì)產(chǎn)生中斷。
作者: chenghaidong    時(shí)間: 2018-10-13 11:01
可以的啊,只要退出中斷就能再次進(jìn)入的啊
作者: cjm82    時(shí)間: 2018-10-13 11:07
進(jìn)入中斷后,關(guān)閉中斷,執(zhí)行中斷程序里的代碼完后,再打開,還是可以進(jìn)入中斷的.
但是一般不這么寫,更多的是某中斷執(zhí)行完其代碼后,將自身使能位關(guān)閉,然后再其他中斷或者main函數(shù)里根據(jù)需要條件觸發(fā)再打開,如.
void main(void)
{
    .....
    ......
    while(1)
    {
        ....
        .....
        if(xxxx&&ex0==0)
        {
            ex0 = 1;
        }
        ............
        ............
    }
}
void ex0_ISR() interrupt 0
{
    .............
    ...............
   .................
    ex0 = 0;
}
建議中斷程序里盡量不要寫循環(huán),更加不應(yīng)該寫DELAY,完全可以通過(guò)寫IF來(lái)判斷,然后設(shè)置標(biāo)志位,main函數(shù)再根據(jù)標(biāo)志位來(lái)執(zhí)行對(duì)應(yīng)的功能.如:
bit flag_1;
void main(void)
{
    while(1)
    {
        if(flag_1==1)
        {
             while(xxx)
             {
                  .............
                  ...........
             }
             delay(xxxx);
             flag_1 = 0;
             ex0 = 1;
        }
    }
}

void ex0_ISR() interrupt 0
{
    ex0 = 0;
    flag_1 = 1;
}
作者: Y_G_G    時(shí)間: 2018-10-13 11:59
不會(huì)C語(yǔ)言,但原理是不變的:你可以在中斷程序里先關(guān)閉中斷,在中斷返回的時(shí)候再打開,下一次一樣的可以觸發(fā)中斷,這樣可以避免中斷等級(jí)低的中斷被中斷等級(jí)高的中斷打斷.
作者: 啊哈0098    時(shí)間: 2018-10-13 13:39
會(huì),只要中斷打開了,申請(qǐng)通過(guò),就會(huì)進(jìn)入中斷服務(wù)
作者: qscwdfr    時(shí)間: 2018-10-13 14:19
會(huì)的會(huì)的
作者: 83543    時(shí)間: 2018-10-13 15:00
注意中斷時(shí)間的設(shè)定
作者: 青桔檸檬    時(shí)間: 2018-10-14 20:52
可以的
作者: yzwzfyz    時(shí)間: 2018-10-14 21:17
取決于中斷源有沒有消失!




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