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单片机