📄 secsys14.lst
字号:
00573
00A7 00574 DL3
00A7 0AA8 00575 GOTO $+1 ; [2] WAISTE TIME
00A8 0AA9 00576 GOTO $+1 ; [2] WAISTE TIME
00A9 0004 00577 CLRWDT ; [1] RESET WATCHDOG TIMER
00AA 02FA 00578 DECFSZ CNT2,1 ; [1]
00AB 0AA7 00579 GOTO DL3 ; [2] CNT0 X 8 us [ CNT0 X Te ]
00580
00AC 00581 SAMPLE3
00AC 0665 00582 BTFSC PORTA,RFIN ; [2] INPUT LOW? THIRD SAMPLE
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 12
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00AD 0AB3 00583 GOTO RMT0 ; [0] NO--RECEIVE ERROR
00584
00AE 0906 00585 CALL TST_RTCC ; [11] CHECK RTCC
00586
00AF 02F9 00587 DECFSZ CNT1,1 ; [1] LAST BIT?
00B0 0A7B 00588 GOTO RCV8 ; [2] ... NO, GET NEXT BIT
00589 ; TOTAL = 14 CYCLES
00590
00B1 0ABA 00591 GOTO RMT21 ; [2] ... YES, ALL BITS RECEIVED
00592
00B2 00593 RMT_0
00B2 0599 00594 BSF CNT1,4 ; [1] HEADER ERROR--FORCE COUNTER > 11
00595
00B3 00596 RMT0 ; [1] HERE IF NOT ALL BITS RECEIVED OK
00B3 00F9 00597 DECF CNT1,1 ; [1] COMPENSATE FOR ROTATE BEFORE DL3
00598
00599 ; ***** JUMP TO HERE IF NOT ALL 66 BITS RECEIVED OK *****
00600
00B4 00601 RMT01
00B4 0906 00602 CALL TST_RTCC ; [11] CHECK RTCC
00603
00B5 0C0B 00604 MOVLW 11D ; TEST FOR NTQ106 TRANSMISSION
00B6 0099 00605 SUBWF CNT1,W ; IF CARRY FLAG SET (RX NOT OK)
00606
00B7 0603 00607 BTFSC STATUS,CARRY ; CARRY SET IF FORMAT INVALID
00B8 0800 00608 RETLW 0 ; HERE IF NOT ALL BITS RECEIVED OK
00B9 05BF 00609 BSF FLAGS,NTQ106 ; INDICATE NTQ106 TX RECEIVED
00610
00611 ; ***** ROTATE FOR ANOTHER 6 TIME TO LINE-UP CSR *****
00612
00BA 00613 RMT21
00BA 0C06 00614 MOVLW 6H ; ADDITIONAL 6 BIT ROTATION REQUIRED
00BB 01F9 00615 ADDWF CNT1,1 ; ADD TO WHAT LEFT IN COUNTER
00616
00BC 00617 RMT22
00BC 0403 00618 CLRC
00BD 090A 00619 CALL ROT_SHIFT ; COMPLETE 64-BIT SHIFT
00BE 02F9 00620 DECFSZ CNT1,1 ; COMPLETE 64-BIT SHIFT
00BF 0ABC 00621 GOTO RMT22
00622
00C0 07BF 00623 BTFSS FLAGS,NTQ106 ; TEST FOR NTQ106 TRANSMISSION
00C1 0AC4 00624 GOTO RMT1
00C2 0077 00625 CLRF SER_0 ; ... YES, THEN CLEAR UPPER BYTE OF SN
00C3 006C 00626 CLRF CSR8
00627
00C4 00628 RMT1
00C4 046F 00629 BCF FLAGS1,BAT_LOW ; CLEAR VLOW BIT
00C5 060C 00630 BTFSC CSR8,0 ; TEST VLOW BIT IN TRANSMISSION
00C6 056F 00631 BSF FLAGS1,BAT_LOW ; INDICATE TX BATERY LOW BIT SET
00C7 00632 RMT11
00633 ; BSF PORTA,LED ; VALID TRANSMISSION FORMAT, LED ON
00C7 0000 00634 NOP
00635
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00C8 00636 RMT3
00C8 0C0F 00637 MOVLW 0FH ; FORCE OPEN BUTTON CODES TO ZERO
00C9 0177 00638 ANDWF SER_0,1
00639
00CA 0403 00640 RMT4 CLRC ; VALID SERIAL NUMBER => VALID TX
00CB 0800 00641 RETLW E_OK ; RETURN WITH 1
00642
00643 ;**************************************************************************
00644 ;
00645 ; FUNCTION : DECRYPT ()
00646 ;
00647 ; DESCRIPTION : DECRYPTS 32 BIT [HOP1:HOP4] USING [CSR0:CSR7]
00648 ;
00649 ; PAGE : 0 ( NOTE : MUST BE LOWER HALF OF PAGE )
00650 ;
00651 ;**************************************************************************
00CC 00652 DECRYPT
00CC 0C0C 00653 MOVLW 11+1 ; OUTER LOOP 11+1 TIMES
00CD 0039 00654 MOVWF CNT1 ; OUTER LOOP 11+1 TIMES
00655
00CE 00656 DECRYPT_OUTER
00657
00CE 0C30 00658 MOVLW 48 ; INNER LOOP 48 TIMES
00CF 0038 00659 MOVWF CNT0 ; INNER LOOP 48 TIMES
00660
00D0 00661 DECRYPT_INNER
00D0 0004 00662 CLRWDT ; RESET WATCHDOG TIMER
00D1 0219 00663 MOVFW CNT1 ; LAST 48 LOOPS RESTORE THE KEY
00D2 0F01 00664 XORLW 1 ; LAST 48 LOOPS RESTORE THE KEY
00D3 0643 00665 BTFSC STATUS,ZERO ; LAST 48 LOOPS RESTORE THE KEY
00D4 0AFA 00666 GOTO ROTATE_KEY ; LAST 48 LOOPS RESTORE THE KEY
00667
00668 ; THE LOOKUP TABLE IS COMPRESSED INTO IN 4 BYTES TO SAVE SPACE
00669 ; USE THE 3 LOW INDEX BITS TO MAKE UP AN 8-BIT BIT MASK
00670 ; USE THE 2 HIGH INDEX BITS TO LOOK UP THE VALUE IN THE TABLE
00671 ; USE THE BIT MASK TO ISOLATE THE CORRECT BIT IN THE BYTE
00672 ; PART OF THE REASON FOR THIS SCHEME IS BECAUSE NORMAL TABLE LOOKUP
00673 ; REQUIRES AN ADDITIONAL STACK LEVEL
00674
00D5 0403 00675 CLRC ; CLEAR CARRY (FOR THE LEFT SHIFT)
00676
00D6 0C01 00677 MOVLW 1 ; INITIALISE MASK = 1
00D7 066A 00678 BTFSC HOP3,3 ; SHIFT MASK 4X IF BIT 2 SET
00D8 0C10 00679 MOVLW 10000B ; SHIFT MASK 4X IF BIT 2 SET
00D9 002E 00680 MOVWF MASK ; INITIALISE MASK = 1
00681
00DA 0709 00682 BTFSS HOP2,0 ; SHIFT MASK ANOTHER 2X IF BIT 1 SET
00DB 0ADE 00683 GOTO $+3
00DC 036E 00684 RLF MASK,F
00DD 036E 00685 RLF MASK,F
00686
00DE 0608 00687 BTFSC HOP1,0 ; SHIFT MASK ANOTHER 1X IF BIT 0 SET
00DF 036E 00688 RLF MASK,F
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 14
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00689
00690 ; MASK HAS NOW BEEN SHIFTED 0-7 TIMES ACCORDING TO BITS 2:1:0
00691
00E0 0C00 00692 MOVLW 0 ; TABLE INDEX = 0
00E1 062B 00693 BTFSC HOP4,1
00E2 0D02 00694 IORLW 2 ; IF BIT 3 SET ADD 2 TO THE TABLE INDEX
00E3 06CB 00695 BTFSC HOP4,6
00E4 0D04 00696 IORLW 4 ; IF BIT 4 SET ADD 4 TO THE TABLE INDEX
00697
00E5 01E2 00698 ADDWF PC,F ; ADD THE INDEX TO THE PROGRAM COUNTER
00699 ; [ MUST BE IN LOWER HALF OF PAGE ]
00700
00E6 00701 TABLE
00E6 0C2E 00702 MOVLW 02EH ; BITS 4:3 WERE 00
00E7 0AED 00703 GOTO TABLE_END ; END OF LOOKUP
00704
00E8 0C74 00705 MOVLW 074H ; BITS 4:3 WERE 01
00E9 0AED 00706 GOTO TABLE_END ; END OF LOOKUP
00707
00EA 0C5C 00708 MOVLW 05CH ; BITS 4:3 WERE 10
00EB 0AED 00709 GOTO TABLE_END ; END OF LOOKUP
00710
00EC 0C3A 00711 MOVLW 03AH ; BITS 4:3 WERE 11
00712
00ED 00713 TABLE_END
00714
00ED 016E 00715 ANDWF MASK,F ; ISOLATE THE CORRECT BIT BY ANDING WITH MASK
00EE 0C00 00716 MOVLW 0 ; COPY THE BIT TO BIT 7
00EF 0743 00717 BTFSS STATUS,ZERO ; COPY THE BIT TO BIT 7
00F0 0C80 00718 MOVLW 10000000B ; COPY THE BIT TO BIT 7
00719
00F1 0189 00720 XORWF HOP2,W ; ONLY INTERESTED IN BIT HOP2,7
00F2 018B 00721 XORWF HOP4,W ; ONLY INTERESTED IN BIT HOP4,7
00F3 0190 00722 XORWF KEY1,W ; ONLY INTERESTED IN BIT KEYREG1,7
00723
00F4 002E 00724 MOVWF MASK ; STORE W TEMPORARILY (WE NEED BIT 7)
00F5 036E 00725 RLF MASK,F ; LEFT ROTATE MASK TO GET BIT 7 INTO THE CARRY
00726
00F6 0368 00727 RLF HOP1,F ; SHIFT IN THE NEW BIT
00F7 0369 00728 RLF HOP2,F
00F8 036A 00729 RLF HOP3,F
00F9 036B 00730 RLF HOP4,F
00731
00FA 00732 ROTATE_KEY
00733
00FA 0403 00734 CLRC ; CLEAR CARRY
00FB 06F7 00735 BTFSC KEY7,7 ; SET CARRY IF LEFTMOST BIT SET
00FC 0503 00736 SETC ; SET CARRY IF LEFTMOST BIT SET
00737
00FD 0371 00738 RLF KEY0,F ; LEFT-ROTATE THE 64-BIT KEY
00FE 0370 00739 RLF KEY1,F
00FF 0372 00740 RLF KEY2,F
0100 0373 00741 RLF KEY3,F
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 15
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0101 0374 00742 RLF KEY4,F
0102 0375 00743 RLF KEY5,F
0103 0376 00744 RLF KEY6,F
0104 0377 00745 RLF KEY7,F
00746
0105 02F8 00747 DECFSZ CNT0,F ; INNER LOOP 48 TIMES
0106 0AD0 00748 GOTO DECRYPT_INNER ; INNER LOOP 48 TIMES
00749
0107 0906 00750 CALL TST_RTCC
0108 02F9 00751 DECFSZ CNT1,F ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
0109 0ACE 00752 GOTO DECRYPT_OUTER ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
00753
010A 0800 00754 RETLW 0 ; RETURN
00755
00756 ;**************************************************************************
00757 ;
00758 ; FUNCTION : TST_RTCC ()
00759 ;
00760 ; DESCRIPTION : TEST RTCC COUNTER AND UPDATE OUTPUT IF REQUIRED
00761 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -