您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC16F628红外接收程序 正文
PIC16F628红外接收程序

PIC16F628红外接收程序

点击数:7626 次   录入时间:03-04 11:44:18   整理:http://www.55dianzi.com   PIC单片机
    andlw    b’00000001’    ; keep only lsb in w,
    xorwf    DATA_TMP2,0    ; xor LSBs of DATA_TMP2 and w,
    btfss    status,z    ; if not equal discard data and
    goto    set_flag    ; goto set_flag -- no valid code has been received

    goto    pre_slope    ; and loop

cleanup                ; collected so far: DATA_2 000STAAA   DATA_1 AACCCCCC
    MOVfw    DATA_1        ; copy DATA_1 to w
    andlw    b’00111111’    ; clear bits 6 and 7
    MOVwf    RC5_CMD        ; copy w to RC5_CMD

    btfsc    DATA_2,3    ; toggle bit is 0?
    bsf    RC5_CMD,7    ; if not, set bit 7 of RC5_CMD
    btfss    DATA_2,4    ; 2nd start bit is 1?
    bsf    RC5_CMD,6    ; if not, set bit 6 of RC5_CMD (extended RC5)

    rlf    DATA_2        ; left shift two times
    rlf    DATA_2        ;
    MOVfw    DATA_2        ; copy DATA_2 to w
    andlw    b’00011100’    ; clear 3 MSB and 2 LSB
    MOVwf    RC5_ADR        ; and copy to RC5_ADR
    btfsc    DATA_1,6    ; address bit 0 is 0?
    bsf    RC5_ADR,0    ; if not, set bit 0 of RC5_ADR
    btfsc    DATA_1,7    ; address bit 1 is 0?
    bsf    RC5_ADR,1    ; if not, set bit 1 of RC5_ADR
                ; now we have: RC5_ADR 000AAAAA    RC5_CMD TCCCCCCC
    bcf    RC5_Flag    ; clear RC5_Flag -- valid code has been received

    return

set_flag
    bsf    RC5_Flag    ; set RC5_Flag -- no valid code has been received
    return


;**************************************************************************************************
; EEPROM read/write subroutines
;**************************************************************************************************

write_ee
    Bank_0
    MOVfw    EEADR_TMP    ; copy EEADR_TMP to eeadr
    Bank_1
    MOVwf    eeadr
    Bank_0
    MOVfw    EEDATA_TMP    ; copy EEDATA_TMP to eedata
    Bank_1
    MOVwf    eedata
    bsf    eecon1,wren    ; enable write
    MOVlw    h’55’        ; eeprom write unlock sequence
    MOVwf    eecon2        ;
    MOVlw    h’aa’        ;
    MOVwf    eecon2        ;
    bsf    eecon1,wr    ; write

w_ready
    btfsc    eecon1,wr    ; write completed?
    goto    w_ready        ;
    Bank_0

    return

;--------------------------------------------------------------------------------------------------

copy_ee                ; reads address and command for assigned remote power key
                ; and turn on delay value from EEPROM and copies them to
                ; the RAM registers PWR_KEY_ADR, PWR_KEY_CMD, and PWR_ON_DELAY
    Bank_1
    MOVlw    h’00’
    MOVwf    eeadr
    bsf    eecon1, rd
    MOVfw    eedata
    Bank_0
    MOVwf    PWR_ON_DELAY

    Bank_1
    MOVlw    h’01’
    MOVwf    eeadr
    bsf    eecon1, rd
    MOVfw    eedata
    Bank_0
    MOVwf    PWR_KEY_ADR

    Bank_1
    MOVlw    h’02’
    MOVwf    eeadr
    bsf    eecon1, rd
    MOVfw    eedata
    Bank_0
    MOVwf    PWR_KEY_CMD

    return

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]  下一页


本文关键字:程序  PIC单片机单片机-工控设备 - PIC单片机