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

標題: 單片機接受到一個紅外信號后怎么復位 [打印本頁]

作者: 茉莉星瞳    時間: 2021-12-15 11:40
標題: 單片機接受到一個紅外信號后怎么復位
接受到一個信號后,這個信號一直存在,停不下來了
作者: 188610329    時間: 2021-12-15 13:08
接受到一個信號? 是一個低電平? 還是解析完成后的一個編碼?

如果是解析完成后的一個編碼, 那么和接收就沒有任何關系了, 是你處理邏輯了.
通常解析完一個編碼,會置一個標志,如:  Resolution_End = 1;
然后,判斷編碼的程序, 是通過  if(Resolution_End == 1)   來對這個解析完的編碼進行后續操作,完了之后 Resolution_End = 0;  就不會再次操作了,  這個 Uart 中斷標志位 RI = 1, IF(RI) , RI =0  ,其實 是一個道理。
作者: 茉莉星瞳    時間: 2021-12-15 13:21
188610329 發表于 2021-12-15 13:08
接受到一個信號? 是一個低電平? 還是解析完成后的一個編碼?

如果是解析完成后的一個編碼, 那么和接收就 ...

就是做的個紅外密碼鎖,通過解析紅外遙控器鍵值來有具體操作,然后按下一個按鍵以后會一直有這個信號的處理程序在執行,這是讀取鍵值的程序,該怎么改一下呢
void ReadIr() interrupt 0{        unsigned char j,k;        unsigned int err;        Time=0;                                                 DelayMs(70);        if(IRIN==0)                        {                                         err=1000;                                                while((IRIN==0)&&(err>0))                                        {                                                DelayMs(1);                        err--;                }                 if(IRIN==1)                                        {                        err=500;                        while((IRIN==1)&&(err>0))                                         {                                DelayMs(1);                                err--;                        }                        for(k=0;k<4;k++)                                        {                                                                for(j=0;j<8;j++)                                        {                                        err=60;                                                        while((IRIN==0)&&(err>0))                                        {                                                DelayMs(1);                                                err--;                                        }                                        err=500;                                        while((IRIN==1)&&(err>0))                                                {                                                DelayMs(1);//0.14ms                                                Time++;                                                err--;                                                if(Time>30)                                                {                                                        EX0=1;                                                        return;                                                }                                        }                                        IrValue[k]>>=1;                                                if(Time>=8)                                                                {                                                IrValue[k]|=0x80;                                        }                                        Time=0;                                                                                                }                        }                }                if(IrValue[2]!=~IrValue[3])                {                                                return;                }        }                        }
作者: 13205495918    時間: 2021-12-15 15:37
你找找例程參考一下吧,一般是考慮標準位。




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