找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

紅外遙控在單片機(jī)外部中0(下降沿觸發(fā))中接收四個字節(jié)數(shù)據(jù)的過程中會再次引發(fā)中斷么

[復(fù)制鏈接]
回帖獎勵 20 黑幣 回復(fù)本帖可獲得 2 黑幣獎勵! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:408519 發(fā)表于 2020-2-28 15:43 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
51單片機(jī)在做紅外遙控的實驗過程中,在外部中斷0函數(shù)中接收四個字節(jié)的數(shù)據(jù),(程序如下:),我的疑問是,在接收數(shù)據(jù)的過程中產(chǎn)生的下降沿,會再次引發(fā)外部中斷0的中斷么?從實驗現(xiàn)象猜測來看是不會的,有點不理解?//外部中斷0觸發(fā)函數(shù)如下:下降沿觸發(fā)
  1. void GetDateToIr() interrupt 0
  2. {
  3.         u8 i, j;
  4.         u8 Byte;
  5.         u16 time;
  6.         
  7.         //1.判斷起始碼低電平9ms
  8.         time = GetLowTime();
  9.         if( (time<8500) || (time>9500) )//8.5ms<time<9.5ms
  10.                 return ;        
  11.         //2.判斷起始碼高電平4.5ms
  12.         time = GetHighTime();
  13.         if( (time<4000) || (time>5000) )//4.0ms<time<5.0ms
  14.                 return ;
  15.                
  16.         //3.接收4Byte數(shù)據(jù)
  17.         for(i=0; i<4; i++)
  18.         {        
  19.                 for(j=0; j<8; j++)
  20.                 {
  21.                         time = GetLowTime();
  22.                         if( (time<340) || (time>780) )//低電平 340us<time<780us
  23.                                 return ;
  24.                         
  25.                         time = GetHighTime();
  26.                         if( (time>340) && (time<780) )//表明這是一個“0”
  27.                         {
  28.                                 Byte >>= 1;
  29.                         }else if( (time>1500) && (time<1900) )//1.5ms<time<1.9ms
  30.                         {
  31.                                 Byte >>= 1;
  32.                                 Byte |= 0x80;
  33.                         }else
  34.                                 return ;
  35.                 }
  36.                 IfredValue[i]=Byte;        
  37.         }
  38. }
復(fù)制代碼


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

使用道具 舉報

5#
ID:408519 發(fā)表于 2020-2-28 19:19 | 只看該作者
Y_G_G 發(fā)表于 2020-2-28 17:26
外部中斷0中斷級別為最高級別,不會被其它中斷打斷
第一次接收到紅外信號之后進(jìn)入中斷,函數(shù)沒有執(zhí)行完之 ...

明白了,謝謝你,我軟件調(diào)試的時候確實是這樣的,在接收數(shù)據(jù)的過程中,即使中斷標(biāo)志位置1了,并不會重新進(jìn)入中斷,而是繼續(xù)執(zhí)行
回復(fù)

使用道具 舉報

地板
ID:408519 發(fā)表于 2020-2-28 19:17 | 只看該作者
csmyldl 發(fā)表于 2020-2-28 17:21
應(yīng)該會觸發(fā),不過我在調(diào)試時,在進(jìn)入中斷后關(guān)閉了外部中斷,等處理完后再打開外部中斷的

我也調(diào)試了一下,現(xiàn)象是,當(dāng)在中斷程序的時候,數(shù)據(jù)口變化的時候(即在接收數(shù)據(jù)的時候),外部中斷0的標(biāo)志位是會變化的,但是不會重新進(jìn)入中斷服務(wù)程序。
回復(fù)

使用道具 舉報

板凳
ID:401564 發(fā)表于 2020-2-28 17:26 | 只看該作者
外部中斷0中斷級別為最高級別,不會被其它中斷打斷
第一次接收到紅外信號之后進(jìn)入中斷,函數(shù)沒有執(zhí)行完之前,中斷是沒有返回的,是一直停留在中斷函數(shù)內(nèi)部檢測端口的電平而已,不會再次觸發(fā)中斷的
只有中斷返回之后才會再次觸發(fā)中斷
回復(fù)

使用道具 舉報

沙發(fā)
ID:235200 發(fā)表于 2020-2-28 17:21 | 只看該作者
應(yīng)該會觸發(fā),不過我在調(diào)試時,在進(jìn)入中斷后關(guān)閉了外部中斷,等處理完后再打開外部中斷的
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表