daihui713:
中斷查詢解碼————意思就是 邊解碼 邊PWM循環(huán), 例如:以50us的時基礎(chǔ)作為定時中斷,時間一到就去中斷里面解碼,以累計的方式判斷什么引導(dǎo)碼用戶碼數(shù)據(jù)碼反碼等, 中斷函數(shù)里面最多也就是++,判斷,循環(huán)存放之類的語句,占用不了多少時間,最多十幾uS就退出中斷了,這樣就不用一直在那里等電平的變化。退出后又接著繼續(xù)主函數(shù)中的PWM循環(huán),十幾US的執(zhí)行時間根本不影響PWM調(diào)光的視覺暫留效應(yīng),這樣就看不到閃。 給你個參考——利用定時器的固定時基來查詢紅外脈沖的寬度,從而進行解碼!可以自己去分析,至于中間的高電平是多少時間,低電平是多少時間都不用去管,只需計算兩個下降沿間隔時間就可以判斷0和1,同時也可以判斷是否是引導(dǎo)碼,或是結(jié)束碼,或是連續(xù)碼定時器查看時間設(shè)置為125us,執(zhí)行定時器中斷程序一次voidTimer0interrupt1() { irTime++; if(irTime==240)//ir解碼后碼值存放時間,240*125us=30ms { irTime--; codeCnt=0x3f; } if(IR_IO) Irprot_LastState=1;//記錄IO狀態(tài) elseif(Irprot_LastState) //有下降沿 { Irprot_LastState=0; //下降沿后IO狀態(tài)記錄為0 if(irTime>3]>3]++; //大于15*125us=1.875ms的間隔為數(shù)據(jù)1 } irTime=0; //下降沿處理完成,將時間清0 }}