新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/172729.htm

        還有就是時(shí)的容陷和誤碼處理(有一種寫法是在移位時(shí)利用進(jìn)位標(biāo)制C同時(shí)移位;我個(gè)人認(rèn)為不太好,因?yàn)橹灰钜晃粵]接收到,整個(gè)接收到的都是誤碼且浪費(fèi)時(shí)間)

        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個(gè)字)
        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ā)一個(gè)結(jié)束位
        SUBWF TIME,0
        BTFSS STATUS,2
        GOTO SENDDIGT5
        BSF PORTB,1
        BSF STARTBIT
        RETURN
        ;/////////////////////////////////////////////////////////////////////////////////////////
        SENDDIGT:;;實(shí)現(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;



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 永安市| 科尔| 沾化县| 灵川县| 青冈县| 贵港市| 伊金霍洛旗| 越西县| 天镇县| 崇义县| 麻城市| 清原| 怀安县| 汽车| 丹凤县| 台北县| 阳朔县| 新野县| 石楼县| 乌鲁木齐县| 兴隆县| 九龙县| 青阳县| 泽普县| 昌邑市| 乌兰浩特市| 弥渡县| 东台市| 巨野县| 金沙县| 安国市| 乡宁县| 醴陵市| 衡水市| 五大连池市| 翁源县| 筠连县| 桑日县| 武山县| 东海县| 嵊泗县|