|
WAIT NOP NOP DECFSZ 29H,1 GOTO WAIT BTFSS PORTA,0 ;PA0 TO C GOTO C0 GOTO C1 C0 BCF STATUS,C GOTO STEP3 C1 BSF STATUS,C
STEP3 MOVLW D''4'' MOVWF 2AH MOVLW 28H ;28H是DAT8F的地址 MOVWF FSR ;利用FSR進(jìn)行間接尋址。 STEP4 RLF INDF,1 DECF FSR,1 DECFSZ 2AH,1 GOTO STEP4 DECFSZ BIT32,1 GOTO STEP1 MOVF ADD8L,0 XORLW 00H BTFSS STATUS,Z GOTO BACK ;低8位地址碼不對,返回 MOVF ADD8H,0 XORLW 0FFH BTFSS STATUS,Z GOTO BACK MOVF DAT8,0 ;8位數(shù)據(jù)碼不對,返回 XORLW 00H BTFSS STATUS,Z GOTO BACK MOVF DAT8F,0 ;8位數(shù)據(jù)反碼不對,返回 XORLW 0FFH BTFSS STATUS,Z GOTO BACK GOTO REM_OK ;代碼接收正確 BACK BSF 20H,0 REM_OK RETURN
回復(fù) 先清32位數(shù)據(jù)再接收. 然后每接收完8位后,RAM要清0
如;**************RAM移位*************************** j1 incf jsp1 ;8位計數(shù)寄存器 incf jsp2 ;32位數(shù),計存器. btfss jsp1,3 ;是否有8位 goto js clrf jsp1 movf sj,0 ;移8位數(shù)到W movwf ** ;W到DATA incf f ;RAM地址加1 clrf sj ;注意這里!!!!!!!!!!!!!!! ;***************************** btfss jsp2,5 ;檢測是否接收完32位. goto js ;否,再檢測. 這是6122和6121 IC的接收程序. 發(fā)表于:2003-03-04 17:34:51
小寶:很高興看到你的提示,不過我的程序不是按照每8位接收后經(jīng)過RAM放入寄存器中,而是每位都經(jīng)過4次循環(huán)移位后直接放入存放數(shù)據(jù)的寄存器中(參見接收程序中的STEP4),所以不可能按昭你所說的那樣清0。
可能是接收程序與你所說的流程不同。請問你能把你完整的接收程序發(fā)給我嗎?萬分感激!我的EMAIL是tanga08@sina.com
你的程序單獨看是沒有問題的。我想關(guān)鍵在于發(fā)射編碼究竟如何?你所謂“第一次可以,以后就不行了”,是不是每次復(fù)位后的第一次發(fā)射和接受是正常的?如果是這樣的,說明還是連發(fā)的處理不是很合適。發(fā)生連發(fā)時,應(yīng)該將25H-28H清空。否則第二次發(fā)射時,25H-28H已經(jīng)有了部分不完整的數(shù)據(jù),造成移位過程中的錯誤數(shù)據(jù),接受失敗。 我的意見不一定正確,僅供參考。
NEC遙控接收問題 NEC遙控接收問題出錯在位接收上。 我看程序有點問題,主要是在接收位上,應(yīng)該是每接受8位后才把FSR-1,在回到接受程序上。如此進(jìn)行4次可以接受32位的數(shù)據(jù)。 發(fā)表于:2003-03-04 20:46:38
并不是位接收問題 我那程序的位接收問題不是先接收8位再保存的,那個4次循環(huán)指的是每接收一位后即改變STATUS標(biāo)志位C,同時4個接收寄存器依次帶C位移位,等到接收32位后(即第1位移位32次后恰好保存到了第一個接收寄存器的第7位,第2位移到了第6位)你可以自己演示一下,這樣32位正好保存到了4個寄存器中。 可以參見我那段程序的STEP3,STEP4。 很感謝有這么多熱心的朋友關(guān)心這個問題!
========================= 紅外線遙控編碼有幾種類型
類型不知道,但格式有上千種 我要做個通用型的紅外接收器, 就是不管遙控器發(fā)送什么碼,反正照收不誤, 然后按原樣把它發(fā)送出去, 我想用PIC做,你看要用哪種型號的控制器做較好! 發(fā)表于:2003-08-26 17:26:08
既然是轉(zhuǎn)發(fā)你管他格式干什么? 你又不解碼,只要檢測聯(lián)接紅外管的PIC的I/O口的電壓變化就行了,再在另一個腳把他發(fā)送出去。送你一個檢測紅外的小程序。只不過要自己做一點電路。點擊瀏覽該文件
我用他做過東西,不是十分精確,但是如果是誤碼是可以看出來的,有時連續(xù)測量的話他會誤操作,所以我一般只看前面的十來次,要精確還是用示波器看好,不知到有人在網(wǎng)上推銷的叫電腦示波器的東西什么樣好不好使?
最后一位數(shù)據(jù)位的寬度如何檢測! 以紅外接收器為準(zhǔn),如果沒有遙控信號的情況下,接收器的輸出端是不是高電平,如果是,最后一位碼,0.56ms低電平過后,接著是出現(xiàn)高電平對吧,那高電平的寬度如何確定就不好辦了 |