| 如何用PIC做紅外線遙控接收? ============================ 先用20106之類的片子解調(diào)后,你用示波器掛在20106的輸出端就可以查看遙控波形。 ============================= NEC遙控接收第一次正常,以后就不行了(附遙控子程序)請(qǐng)指正。 不才是PIC領(lǐng)域的新手,最近寫了一個(gè)關(guān)于NEC遙控接收解碼的測(cè)試程序,下面是此程序的遙控解碼部分但是它只能第一次正確判斷出接收碼,以后就不行了請(qǐng)高手指點(diǎn)》
我知道遙控碼的連發(fā)情況,但我已經(jīng)設(shè)置了32位接收碼的計(jì)數(shù)器,應(yīng)該不會(huì)有問題的
我判斷0(1.125ms)和1(2.25ms) 由于我用的是C57,只能通過查詢方式來確定.通過高電平的時(shí)間(以下程序中延時(shí)0.9MS)不同來決定0或1的。
;NEC格式遙控碼的接收與解碼子程序 ;本程序中采用PORTA 0口接收紅外遙控,地址碼為00H,高位FFH,數(shù)據(jù)碼為00H,反碼為FFH,接收到的依次存放到 25H ADD8L, 26H ADD8H,DAT8 27H ,28H DAT8F寄存器中。 ;第一次接收到此信號(hào)即關(guān)機(jī).
;==================================== REMOTE_RECEIVER CLRF 20H ;設(shè)定遙控接收正確與否標(biāo)志位。若20H的第0位為1, BTFSC PORTA,0 ;遙控接收無效。 GOTO BACK ;判斷9MS低電平和4.5MS高電平。 ;----5ms delay---------------- MOVLW 06H ;防止抖動(dòng),延時(shí)5ms MOVWF 30H LOOP4 MOVLW 0FFH MOVWF 31H LOOP5 DECFSZ 31H,1 GOTO LOOP5 DECFSZ 30H,1 GOTO LOOP4
;----------------------------- BTFSC PORTA,0 GOTO BACK ;遙控接收無效。 LOOP0 BTFSS PORTA,0 ;遙控接收,等待高電平出現(xiàn),約9-5ms GOTO LOOP0
;------------------------------以下是接收代碼的步子 STEP MOVLW D''32'' ;設(shè)置32位接收碼的計(jì)數(shù)器. MOVWF BIT32 STEP1 BTFSC PORTA,0 ;等待4.5ms GOTO STEP1 STEP2 BTFSS PORTA,0 GOTO STEP2 ;測(cè)一個(gè)脈沖,
MOVLW D''180'' ;延時(shí)0.9ms,測(cè)試高電平的脈寬。 MOVWF 29H BCF STATUS,C |