⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rke_tianqiu_630 over.lst

📁 汽车遥控制的源代码.用的单片机是PIC16F72. 大批量生产.
💻 LST
📖 第 1 页 / 共 5 页
字号:

                      00193 #define KEY2_ADDRESS    0X10
                      00194 #define KEY3_ADDRESS    0X20
                      00195 #define KEY4_ADDRESS    0X30
                      00196 
                      00197 #define LEARN_ADDRESS   0X60            ;60 save 2 copy
                      00198 ;#define        DECRIM_NUMBER   0XC2
                      00199 #define EEPROM_PROTEC   0X3A
                      00200 
                      00201 
                      00202 ;------------------------------------------------
                      00203 
                      00204 ;RKE_Learn_Status
                      00205 #define RKE_LEARN_BEGIN         0x00            ;Get two H two L
                      00206 #define RKE_LEARN_READY         0x01            
                      00207 #define RKE_LEARN_REAL1         0x02            
                      00208 #define RKE_LEARN_REAL2         0x03            
                      00209 
                      00210 
                      00211 ;------------------------------------------------
                      00212 
                      00213 ;RF_Flags
                      00214 #define ALERT_LED_SHOW          RF_Flags,0
                      00215 #define MAIN_CHECK              RF_Flags,1
                      00216 #define WRITE_EEPROM_ENABLE     RF_Flags,2
                      00217 
                      00218 #define KEY_MAY_ERROR_CHECK     RF_Flags,3
                      00219 
                      00220 #define PASS_LOW                RF_Flags,5
                      00221 #define RF_FRAME_GET            RF_Flags,6
                      00222 #define RF_FRAME_RECIEVE        RF_Flags,7      ;if set, Preamble is Get, if clr, test for preamble
                      00223 
                      00224 ;------------------------------------------------
                      00225 
                      00226 ;About Learn Port                               ;Door, fire and LearnKey
                      00227 #define PORT_LEARN_STATUS       Key_Flag,2      ;three ways in at RC0/2/5
                      00228 #define PORT_HAND_OPEN          Key_Flag,0      ;
                      00229 #define PORT_HAND_CLOSE         Key_Flag,1      ;
                      00230 
                      00231 
                      00232 
                      00233 
                      00234 
                      00235 
                      00236 
                      00237 
                      00018 
                      00019 
                      00020 
                      00021 ;**********************************************************************
0000                  00022         ORG     0x000             ; processor reset vector
0000   018A           00023         clrf    PCLATH            ; ensure page bits are claared
0001   28CE           00024         goto    main              ; go to beginning of program
                      00025 
MPASM 03.80 Released                      RKE_TIANQIU_630.ASM   2-7-2005  14:54:21         PAGE  6


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00026 
0004                  00027         ORG     0x004             ; interrupt vector location
0004   00A0           00028         movwf   w_temp            ; save off current W register contents
0005   0803           00029         movf    STATUS,W          ; move status register into W register
0006   1283           00030         bcf     STATUS,RP0        ; ensure file register bank set to 0
0007   00A1           00031         movwf   status_temp       ; save off contents of STATUS register
                      00032         
0008   018A           00033         clrf    PCLATH
0009   204D           00034         call    Interrupt_Begin
                      00035         
000A   0821           00036         movf    status_temp,w     ; retrieve copy of STATUS register
000B   0083           00037         movwf   STATUS            ; restore pre-isr STATUS register contents
000C   0EA0           00038         swapf   w_temp,f
000D   0E20           00039         swapf   w_temp,w          ; restore pre-isr W register contents
000E   0009           00040         retfie                    ; return from interrupt
                      00041 
                      00042 #include "Decript.inc"
                      00001 ;-------------------------------------------------------------------------
                      00002 ;
                      00003 ; FUNCTION      : DECRYPT ()                            
                      00004 ;
                      00005 ; DESCRIPTION   : DECRYPTS 32 BIT [HOP1:HOP4] USING [CSR0:CSR7]
                      00006 ;
                      00007 ; PAGE          : 0 ( NOTE : MUST BE LOWER HALF OF PAGE )
                      00008 ;
                      00009 ;-------------------------------------------------------------------------
000F                  00010 DECRYPT
000F   300C           00011         MOVLW   11+1            ; OUTER LOOP 11+1 TIMES 
0010   00A7           00012         MOVWF   CNT1            ; OUTER LOOP 11+1 TIMES 
                      00013 
0011                  00014 DECRYPT_OUTER
0011   3030           00015         MOVLW   48              ; INNER LOOP 48 TIMES
0012   00A6           00016         MOVWF   CNT0            ; INNER LOOP 48 TIMES
                      00017 
0013                  00018 DECRYPT_INNER
0013   0064           00019         CLRWDT                  ; RESET WATCHDOG TIMER
0014   0827           00020         MOVFW   CNT1            ; LAST 48 LOOPS RESTORE THE KEY
0015   3A01           00021         XORLW   1               ; LAST 48 LOOPS RESTORE THE KEY
0016   1903           00022         SKPNZ                   ; LAST 48 LOOPS RESTORE THE KEY
0017   283D           00023         GOTO    ROTATE_KEY      ; LAST 48 LOOPS RESTORE THE KEY
                      00024 
                      00025         ; THE LOOKUP TABLE IS COMPRESSED INTO IN 4 BYTES TO SAVE SPACE
                      00026         ; USE THE 3 LOW INDEX BITS TO MAKE UP AN 8-BIT BIT MASK
                      00027         ; USE THE 2 HIGH INDEX BITS TO LOOK UP THE VALUE IN THE TABLE
                      00028         ; USE THE BIT MASK TO ISOLATE THE CORRECT BIT IN THE BYTE
                      00029         ; PART OF THE REASON FOR THIS SCHEME IS BECAUSE NORMAL TABLE 
                      00030         ; LOOKUP REQUIRES AN ADDITIONAL STACK LEVEL
                      00031                                                         
0018   1003           00032         CLRC                    ; CLEAR CARRY (FOR THE LEFT SHIFT)
                      00033        
0019   3001           00034         MOVLW   1               ; INITIALISE MASK = 1
001A   19B1           00035         BTFSC   HOP3,3          ; SHIFT MASK 4X IF BIT 2 SET
001B   3010           00036         MOVLW   10000B          ; SHIFT MASK 4X IF BIT 2 SET
MPASM 03.80 Released                      RKE_TIANQIU_630.ASM   2-7-2005  14:54:21         PAGE  7


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

001C   00A5           00037         MOVWF   MASK            ; INITIALISE MASK = 1
                      00038 
001D   1C32           00039         BTFSS   HOP2,0          ; SHIFT MASK ANOTHER 2X IF BIT 1 SET
001E   2821           00040         GOTO    $+3
001F   0DA5           00041         RLF     MASK,F
0020   0DA5           00042         RLF     MASK,F            
                      00043 
0021   1833           00044         BTFSC   HOP1,0          ; SHIFT MASK ANOTHER 1X IF BIT 0 SET
0022   0DA5           00045         RLF     MASK,F
                      00046 
                      00047         ; MASK HAS NOW BEEN SHIFTED 0-7 TIMES ACCORDING TO BITS 2:1:0
                      00048 
0023   3000           00049         MOVLW   0               ; TABLE INDEX = 0
0024   18B0           00050         BTFSC   HOP4,1
0025   3802           00051         IORLW   2               ; IF BIT 3 SET ADD 2 TO THE TABLE INDEX
0026   1B30           00052         BTFSC   HOP4,6
0027   3804           00053         IORLW   4               ; IF BIT 4 SET ADD 4 TO THE TABLE INDEX
                      00054 
0028   0782           00055         ADDWF   PCL,F           ; ADD THE INDEX TO THE PROGRAM COUNTER
                      00056                                 ;  [ MUST BE IN LOWER HALF OF PAGE ]
                      00057                                
0029                  00058 TABLE
0029   302E           00059         MOVLW   02EH            ; BITS 4:3 WERE 00
002A   2830           00060         GOTO    TABLE_END       ; END OF LOOKUP
                      00061 
002B   3074           00062         MOVLW   074H            ; BITS 4:3 WERE 01
002C   2830           00063         GOTO    TABLE_END       ; END OF LOOKUP
                      00064 
002D   305C           00065         MOVLW   05CH            ; BITS 4:3 WERE 10
002E   2830           00066         GOTO    TABLE_END       ; END OF LOOKUP
                      00067 
002F   303A           00068         MOVLW   03AH            ; BITS 4:3 WERE 11
                      00069                                  
0030                  00070 TABLE_END
0030   05A5           00071         ANDWF   MASK,F          ; ISOLATE THE CORRECT BIT
0031   3000           00072         MOVLW   0               ; COPY THE BIT TO BIT 7
0032   1D03           00073         SKPZ                    ; COPY THE BIT TO BIT 7
0033   3080           00074         MOVLW   10000000B       ; COPY THE BIT TO BIT 7
                      00075 
0034   0632           00076         XORWF   HOP2,W          ; ONLY INTERESTED IN BIT HOP2,7
0035   0630           00077         XORWF   HOP4,W          ; ONLY INTERESTED IN BIT HOP4,7
0036   0629           00078         XORWF   KEY1,W          ; ONLY INTERESTED IN BIT KEYREG1,7
                      00079 
0037   00A5           00080         MOVWF   MASK            ; STORE W TEMPORARILY (WE NEED BIT 7)
0038   0DA5           00081         RLF     MASK,F          ; LEFT ROTATE MASK TO GET BIT 7 INTO CARRY
                      00082 
0039   0DB3           00083         RLF     HOP1,F          ; SHIFT IN THE NEW BIT
003A   0DB2           00084         RLF     HOP2,F
003B   0DB1           00085         RLF     HOP3,F
003C   0DB0           00086         RLF     HOP4,F
                      00087 
003D                  00088 ROTATE_KEY
003D   1003           00089         CLRC                    ; CLEAR CARRY
MPASM 03.80 Released                      RKE_TIANQIU_630.ASM   2-7-2005  14:54:21         PAGE  8


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

003E   1BAF           00090         BTFSC   KEY7,7          ; SET CARRY IF LEFTMOST BIT SET
003F   1403           00091         SETC                    ; SET CARRY IF LEFTMOST BIT SET
                      00092 
0040   0DA8           00093         RLF     KEY0,F          ; LEFT-ROTATE THE 64-BIT KEY 
0041   0DA9           00094         RLF     KEY1,F
0042   0DAA           00095         RLF     KEY2,F
0043   0DAB           00096         RLF     KEY3,F
0044   0DAC           00097         RLF     KEY4,F
0045   0DAD           00098         RLF     KEY5,F
0046   0DAE           00099         RLF     KEY6,F
0047   0DAF           00100         RLF     KEY7,F       
                      00101         
                      00102 
0048   0BA6           00103         DECFSZ  CNT0,F          ; INNER LOOP 48 TIMES
0049   2813           00104         GOTO    DECRYPT_INNER   ; INNER LOOP 48 TIMES
                      00105 
004A   0BA7           00106         DECFSZ  CNT1,F          ; OUTER LOOP 12 TIMES (11+1 TO RESTORE KEY)
004B   2811           00107         GOTO    DECRYPT_OUTER   ; OUTER LOOP 12 TIMES (11+1 TO RESTORE KEY)
                      00108         
004C   3400           00109         RETLW   0               ; RETURN 
                      00043 #include "Inter.inc"
                      00001 ; isr code can go here or be located as a call subroutine elsewhere
                      00002 ;**********************************************************
                      00003 ;interrupt codes
                      00004 ;**********************************************************
004D                  00005 Interrupt_Begin:
                      00006 ;==========================================================
                      00007                 
004D   1283 1303      00008         banksel PORTA
                      00009         
004F   1D0B           00010         btfss   INTCON,T0IF
0050   28B3           00011         goto    TMR0_Interrupt_Over
0051   110B           00012         bcf     INTCON,T0IF
                      00013         
0052   30B8           00014         movlw   d'184'                  ;75us
0053   0781           00015         addwf   TMR0,F
                      00016 
0054   1B3D           00017         btfsc   RF_FRAME_GET
0055   28C3           00018         goto    Interrupt_Over
                      00019 
0056   1BBD           00020         btfsc   RF_FRAME_RECIEVE
0057   288C           00021         goto    Get_Frame_Begin
                      00022 
0058   1805           00023         btfsc   RECIEVE_PORT
0059   285D           00024         goto    Recieve_High
                      00025         
005A                  00026 Recieve_Low:
005A   0ABE           00027         incf    Preamble_Low_Counter,F
005B   16BD           00028         bsf     PASS_LOW
005C   28C3           00029         goto    Interrupt_Over
005D                  00030 Recieve_High:
005D   1EBD           00031         btfss   PASS_LOW
005E   288A           00032         goto    Recieve_High_Jump
MPASM 03.80 Released                      RKE_TIANQIU_630.ASM   2-7-2005  14:54:21         PAGE  9


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

005F   12BD           00033         bcf     PASS_LOW
                      00034         
                      00035                                         ;if 3<=High<5 and 3<=Low<5 then increase Preamble_Counter
                      00036                                         ;if 3<=High<5 and 30<=Low then test Preamble_Counter

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -