標(biāo)題: 單片機(jī)外部中斷為何會(huì)自行停止執(zhí)行 [打印本頁(yè)]

作者: curster2001    時(shí)間: 2017-10-20 11:46
標(biāo)題: 單片機(jī)外部中斷為何會(huì)自行停止執(zhí)行
是因?yàn)橥獠恐袛嘤袝r(shí)間上的限制,必須在限制的時(shí)間內(nèi)處理完中斷中的資料,或者是因?yàn)橹袛嘀械腸ode和指令下的太多造成自行停止執(zhí)行的現(xiàn)象.
作者: ggjj2012    時(shí)間: 2017-10-21 01:29
處理完后,有沒(méi)有清除中斷標(biāo)志位?
作者: ggjj2012    時(shí)間: 2017-10-21 01:31
處理完中斷后,有沒(méi)有清楚中斷標(biāo)志位呢
作者: wulin    時(shí)間: 2017-10-21 07:43
51單片機(jī)對(duì)于外部中斷響應(yīng)沒(méi)有時(shí)間限制,只對(duì)觸發(fā)信號(hào)要求應(yīng)至少維持2個(gè)系統(tǒng)時(shí)鐘。當(dāng)外部中斷服務(wù)程序被響應(yīng)后,中斷請(qǐng)求標(biāo)志位會(huì)自動(dòng)被清0。不過(guò)在實(shí)際應(yīng)用中不宜在中斷服務(wù)程序里執(zhí)行過(guò)多指令。
作者: curster2001    時(shí)間: 2017-10-21 07:58
在中斷一開(kāi)始就己經(jīng)清除中斷標(biāo)誌了,但不知為什麼就是不能將整個(gè)中斷完整的處理完成,是否是因?yàn)榛厝μ?8*8),或者是中斷程式有其它的限制還是有什麼特別的指令要下呢?
作者: zl2168    時(shí)間: 2017-10-21 08:00
外部中斷沒(méi)有時(shí)間上的限制,取決于電路結(jié)構(gòu)和程序編制!
作者: jubaolun    時(shí)間: 2017-10-21 08:23
應(yīng)該是你的程序有問(wèn)題?纯赐獠恐袛嗟南嚓P(guān)資料,只有幾個(gè)指令。
作者: curster2001    時(shí)間: 2017-10-21 09:38
jubaolun 發(fā)表于 2017-10-21 08:23
應(yīng)該是你的程序有問(wèn)題?纯赐獠恐袛嗟南嚓P(guān)資料,只有幾個(gè)指令。

我的回圈一開(kāi)始是4*8,因發(fā)現(xiàn)抓的資料不足以判段,故增加致8*8,中斷程式就停滯了,一開(kāi)始我也認(rèn)為可能是回圈太大了,我降回5*8,也還是不行,只有4*8程式才能正常運(yùn)行,以上請(qǐng)悉知.
作者: curster2001    時(shí)間: 2017-10-21 17:24
wulin 發(fā)表于 2017-10-21 07:43
51單片機(jī)對(duì)于外部中斷響應(yīng)沒(méi)有時(shí)間限制,只對(duì)觸發(fā)信號(hào)要求應(yīng)至少維持2個(gè)系統(tǒng)時(shí)鐘。當(dāng)外部中斷服務(wù)程序被響 ...

我的程式就那麼簡(jiǎn)單,我只是將j<4;改成j<8而己程式就不知跑去那裡了


for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
{
  for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
  {
                        while (IRIN)            //等 IR 變?yōu)榈碗娖,跳過(guò)4.5ms的前導(dǎo)高電平信號(hào)。
                        {delay(1);}
                        while (!IRIN)          //等 IR 變?yōu)楦唠娖?br />                         {delay(1);}
                        while (IRIN)           //計(jì)算IR高電平時(shí)長(zhǎng)
                        {
                                delay(1);
                                N++;           
                                if (N>=30)
                                {  
                                        goto ENDFO;
                                }                  //0.14ms計(jì)數(shù)過(guò)長(zhǎng)自動(dòng)離開(kāi)。
      }                        //高電平計(jì)數(shù)完畢               
     IRCOM[j]=IRCOM[j] >> 1;                  //數(shù)據(jù)最高位補(bǔ)“0”
     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數(shù)據(jù)最高位補(bǔ)“1”
     N=0;
  }//end for k
}//end for j




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