SKPZ ; COPY THE BIT TO BIT 7
MOV LW 10000000B ; COPY THE BIT TO BIT 7
XORWF HOP2,W ; ONLY INTERESTED IN BIT HOP2,7
XORWF HOP4,W ; ONLY INTERESTED IN BIT HOP4,7
XORWF KEY1,W ; ONLY INTERESTED IN BIT KEYREG1,7
MOV WF MASK ; STORE W TEMPORARILY (WE NEED BIT 7)
RLF MASK,F ; LEFT ROTATE MASK TO GET BIT 7 INTO THE CARRY
RLF HOP1,F ; SHIFT IN THE NEW BIT
RLF HOP2,F
RLF HOP3,F
RLF HOP4,F
ROTATE_KEY
CLRC ; CLEAR CARRY
BTFSC KEY7,7 ; SET CARRY IF LEFTMOST BIT SET
SETC ; SET CARRY IF LEFTMOST BIT SET
RLF KEY0,F ; LEFT-ROTATE THE 64-BIT KEY
RLF KEY1,F
RLF KEY2,F
RLF KEY3,F
RLF KEY4,F
RLF KEY5,F
RLF KEY6,F
RLF KEY7,F
DECFSZ CNT0,F ; INNER LOOP 48 TIMES
GOTO DECRYPT_INNER ; INNER LOOP 48 TIMES
DECFSZ CNT1,F ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
GOTO DECRYPT_OUTER ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
RETLW 0 ; RETURN
;------------------------------------------------------------------------------
;
; FUNCTION : LOAD_CNT_VALS()
;
; DESCRIPTION : LOAD COUNTERS INTO WRITE BUFFERS
;
; NOTE : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------
LOAD_CNT_VALS
MOV FW CNTR_HI ; LOAD MSB OF COUNTER
MOV WF TMP1
MOV FW CNTR_LW ; LOAD LSB OF COUNTER
MOV WF TMP2
RETLW 0
;------------------------------------------------------------------------------
;
; FUNCTION : RECEIVE()
;
; DESCRIPTION : RECEPTION ROUTINE FOR PWM TRANSMISSIONS
;
; NOTE : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------
RECEIVE
;******** WAIT FOR HEADER AND CALIBRATE *******************
BTFSS PORTA,RFIN ; INPUT LOW?
GOTO RMT_0 ; YES; RECEIVE ERROR
MOV LW 10 ; 10 ms TIMER
MOV WF CNT1
RCV0
MOV LW 200
MOV WF CNT0
RCV1
BTFSS PORTA,RFIN ; [2] INPUT HIGH?
GOTO RCV2 ; [0] NO, JUMP OUT OF LOOP
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页
本文关键字:源程序 PIC单片机,单片机-工控设备 - PIC单片机