天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產品競爭力

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

PIC單片機紅外線控制方面的內容

更新時間: 2019-03-23
閱讀量:1658

十年專注單片機方案開發的方案公司英銳恩,分享PIC單片機紅外線控制方面的內容。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

紅外線控制方面的內容

如何用PIC做紅外線遙控接收? 
============================   
先用20106之類的片子解調后,你用示波器掛在20106的輸出端就可以查看遙控波形。
=============================
NEC遙控接收第一次正常,以后就不行了(附遙控子程序)請指正。
不才是PIC領域的新手,最近寫了一個關于NEC遙控接收解碼的測試程序,下面是此程序的遙控解碼部分但是它只能第一次正確判斷出接收碼,以后就不行了請高手指點》

我知道遙控碼的連發情況,但我已經設置了32位接收碼的計數器,應該不會有問題的

我判斷0(1.125ms)和1(2.25ms) 由于我用的是C57,只能通過查詢方式來確定.通過高電平的時間(以下程序中延時0.9MS)不同來決定0或1的。

;NEC格式遙控碼的接收與解碼子程序
;本程序中采用PORTA  0口接收紅外遙控,地址碼為00H,高位FFH,數據碼為00H,反碼為FFH,接收到的依次存放到  25H   ADD8L,   26H   ADD8H,DAT8    27H ,28H      DAT8F寄存器中。
;第一次接收到此信號即關機.

;====================================
REMOTE_RECEIVER 
         CLRF 20H              ;設定遙控接收正確與否標志位。若20H的第0位為1,
         BTFSC     PORTA,0     ;遙控接收無效。
         GOTO      BACK        ;判斷9MS低電平和4.5MS高電平。
;----5ms delay----------------
         MOVLW     06H         ;防止抖動,延時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        ;遙控接收,等待高電平出現,約9-5ms
         GOTO LOOP0

;------------------------------以下是接收代碼的步子
STEP      MOVLW D'32'         ;設置32位接收碼的計數器.
          MOVWF BIT32
STEP1     BTFSC PORTA,0       ;等待4.5ms
          GOTO STEP1
STEP2     BTFSS PORTA,0
          GOTO STEP2              ;測一個脈沖,

          MOVLW D'180'         ;延時0.9ms,測試高電平的脈寬。
          MOVWF 29H
          BCF STATUS,C
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進行間接尋址。
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位數據碼不對,返回
          XORLW 00H
            BTFSS STATUS,Z
            GOTO BACK
             MOVF DAT8F,0      ;8位數據反碼不對,返回
             XORLW 0FFH
              BTFSS STATUS,Z
              GOTO BACK 
          GOTO REM_OK       ;代碼接收正確
BACK      BSF 20H,0
REM_OK    RETURN


 
 
回復  先清32位數據再接收.
然后每接收完8位后,RAM要清0

如;**************RAM移位***************************
j1       incf     jsp1     ;8位計數寄存器
         incf     jsp2      ;32位數,計存器.
         btfss    jsp1,3   ;是否有8位
         goto     js
         clrf     jsp1

 movf     sj,0     ;移8位數到W
         movwf       **    ;W到DATA
         incf     f       ;RAM地址加1
         clrf     sj       ;注意這里!!!!!!!!!!!!!!!
;*****************************
         btfss    jsp2,5     ;檢測是否接收完32位.
         goto     js         ;否,再檢測.
這是6122和6121  IC的接收程序.

联系我们: 闽清县| 镇康县| 东安县| 柞水县| 时尚| 揭阳市| 田林县| 石景山区| 济宁市| 郎溪县| 涟源市| 淳安县| 舞阳县| 增城市| 清新县| 通江县| 昭苏县| 平塘县| 蓝山县| 唐山市| 乐业县| 长葛市| 晋宁县| 无为县| 长垣县| 巨鹿县| 长沙县| 酉阳| 繁昌县| 吉木乃县| 丹凤县| 庆安县| 池州市| 克什克腾旗| 阳山县| 正阳县| 盱眙县| 镇坪县| 抚宁县| 无极县| 手机|