<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC單片機紅外遙控編碼與解碼的問題分享

          PIC單片機紅外遙控編碼與解碼的問題分享

          作者: 時間:2011-05-28 來源:網(wǎng)絡(luò) 收藏

          假如用中斷的話也可用時間查詢的方法,只是接收口改用帶中斷的口線;RB4--RB7,CCP1,CCP2,都可以。建議不要用RB0(他當(dāng)按鍵輸入最好用);

          本文引用地址:http://www.ex-cimer.com/article/172729.htm

          還有就是時的容陷和誤碼處理(有一種寫法是在移位時利用進位標(biāo)制C同時移位;我個人認(rèn)為不太好,因為只要差一位沒接收到,整個接收到的都是誤碼且浪費時間)

          2 再談發(fā)送

          原理是接收的逆過程

          例程如下(用來發(fā)6221;分頻比為256)

          ;///////////////////////////////////////////////////////////////////////////////////////////////
          READDIGT:
          MOVF SENDLOOP,0
          ADDWF PC,1
          GOTO SENDC4
          GOTO SENDC3
          GOTO SENDC2
          GOTO SENDC1
          GOTO SENDC0
          ;///////////////////////////////////
          SENDC0:
          MOVF C4COUNT,0;;讀要發(fā)的數(shù)據(jù)(假設(shè)要發(fā)5個字)
          RETURN
          SENDC1:
          MOVF C3COUNT,0
          RETURN
          SENDC2:
          MOVF C2COUNT,0
          RETURN
          SENDC3:
          MOVF C1COUNT,0
          RETURN
          SENDC4:
          MOVF C0COUNT,0
          RETURN
          ;///////////////////////////////////
          SENDBIT:
          CLRF TIME
          BCF PORTB,1
          SENDBIT1:
          CLRWDT
          MOVLW .35
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDBIT1
          CLRF TIME
          BSF PORTB,1
          SENDBIT2:
          CLRWDT
          MOVLW .18
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDBIT2
          CLRF SENDLOOP ;碼頭數(shù)據(jù)發(fā)送

          //////////////////////////////////////////////
          SENDBIT3:
          CLRWDT
          BCF INTCON,7
          CALL READDIGT
          MOVWF SENDCOUNT
          BSF INTCON,7
          CALL SENDDIGT
          INCF SENDLOOP,1
          MOVLW .5
          SUBWF SENDLOOP,0
          BTFSS STATUS,2
          GOTO SENDBIT3
          CLRF TIME
          BCF PORTB,1
          SENDDIGT5:
          CLRWDT
          MOVLW .2;;加發(fā)一個結(jié)束位
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDDIGT5
          BSF PORTB,1
          BSF STARTBIT
          RETURN
          ;/////////////////////////////////////////////////////////////////////////////////////////
          SENDDIGT:;;實現(xiàn)0和1的發(fā)送
          MOVLW .8
          MOVWF LOOPSENDCOUNT
          SENDDIGTGO:
          BTFSS SENDCOUNT,7
          GOTO ZERSEND
          CLRF TIME
          SENDDIGT1:
          CLRWDT
          BCF PORTB,1
          MOVLW .2
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDDIGT1
          CLRF TIME
          SENDDIGT2:
          CLRWDT
          BSF PORTB,1
          MOVLW .6
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDDIGT2
          GOTO SENDOVER
          ZERSEND:
          CLRF TIME
          SENDDIGT3:
          CLRWDT
          BCF PORTB,1
          MOVLW .2
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDDIGT3
          CLRF TIME
          SENDDIGT4:
          CLRWDT
          BSF PORTB,1
          MOVLW .2
          SUBWF TIME,0
          BTFSS STATUS,2
          GOTO SENDDIGT4
          SENDOVER:
          RLF SENDCOUNT,1
          DECFSZ LOOPSENDCOUNT
          GOTO SENDDIGTGO
          RETURN

          相應(yīng)的C代碼如下:(C5口是發(fā)送口)

          #include
          #include
          #include
          unsigned char dispcount[5];//要發(fā)送的碼值
          unsigned char i,k,data,rfbit,zbit,rfgobit;



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();