51單片機在做紅外遙控的實驗過程中,在外部中斷0函數中接收四個字節的數據,(程序如下:),我的疑問是,在接收數據的過程中產生的下降沿,會再次引發外部中斷0的中斷么?從實驗現象猜測來看是不會的,有點不理解?//外部中斷0觸發函數如下:下降沿觸發
- void GetDateToIr() interrupt 0
- {
- u8 i, j;
- u8 Byte;
- u16 time;
-
- //1.判斷起始碼低電平9ms
- time = GetLowTime();
- if( (time<8500) || (time>9500) )//8.5ms<time<9.5ms
- return ;
- //2.判斷起始碼高電平4.5ms
- time = GetHighTime();
- if( (time<4000) || (time>5000) )//4.0ms<time<5.0ms
- return ;
-
- //3.接收4Byte數據
- for(i=0; i<4; i++)
- {
- for(j=0; j<8; j++)
- {
- time = GetLowTime();
- if( (time<340) || (time>780) )//低電平 340us<time<780us
- return ;
-
- time = GetHighTime();
- if( (time>340) && (time<780) )//表明這是一個“0”
- {
- Byte >>= 1;
- }else if( (time>1500) && (time<1900) )//1.5ms<time<1.9ms
- {
- Byte >>= 1;
- Byte |= 0x80;
- }else
- return ;
- }
- IfredValue[i]=Byte;
- }
- }
復制代碼
|