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

📄 p676_koq.lst

📁 PIC16f676/630移植的keeloq滚动码汇编程序,节省一个外部EEPROM,并增加I/O端口.
💻 LST
📖 第 1 页 / 共 5 页
字号:
0120                  00710 DL3
0120   2921           00711         GOTO    $+1                                             ; [2] WASTE TIME
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 15


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0121   2922           00712         GOTO    $+1                                             ; [2] WASTE TIME
0122   0064           00713         CLRWDT                          ; [1] RESET WATCHDOG TIMER
0123   0BA6           00714         DECFSZ  CNT2,1                  ; [1]
0124   2920           00715         GOTO    DL3                     ; [2] CNT0 X 8 us [ CNT0 X Te ]
                      00716 
0125                  00717 SAMPLE3
0125   1885           00718         BTFSC   PORTA,RFIN              ; [2] INPUT LOW?  THIRD SAMPLE
0126   292B           00719         GOTO    RMT0                    ; [0] NO--RECEIVE ERROR
                      00720 
0127   2025           00721         CALL    TST_RTCC                ; [11] CHECK RTCC
                      00722 
0128   0BA5           00723         DECFSZ  CNT1,1                  ; [1] LAST BIT?
0129   28F4           00724         GOTO    RCV8                    ; [2] ... NO, GET NEXT BIT
012A   292D           00725         GOTO    RMT1                            ; TOTAL = 14 CYCLES
                      00726 
                      00727 
012B                  00728 RMT_0
012B                  00729 RMT0    
012B   1403           00730 RMT01   BSF     STATUS,C                ; INVALID TRANSMISSION
012C   3401           00731                 RETLW   1                       ; RETURN
                      00732 
012D   1405           00733 RMT1    BSF     PORTA,LED               ; VALID TRANSMISSION FORMAT, LED ON
012E   300F           00734                 MOVLW   0FH                     ; FORCE OPEN BUTTON CODES TO ZERO
012F   05B0           00735                 ANDWF   SER_0,1
0130   1003           00736                 CLRC                            ; VALID SERIAL NUMBER => VALID TX
0131   3400           00737                 RETLW   0               ; RETURN 
                      00738 
                      00739 ;===========================================================================
                      00740 ;
                      00741 ; FUNCTION      : M_LOOP ()                             
                      00742 ;
                      00743 ; DESCRIPTION   : MAIN PROGRAM ROUTINE
                      00744 ;
                      00745 ;===========================================================================
                      00746 
0132                  00747 M_LOOP  
0132   1005           00748         BCF             PORTA,LED                
0133   1D05           00749         BTFSS   PORTA,LRN               
0134   298F           00750         GOTO    LEARN                   ; TEST & HANDLE LEARN BUTTON
0135   2025           00751         CALL    TST_RTCC                ; UPDATE TIMER 
0136   2031           00752         CALL    TST_TIMER               ; HANDLE TIMER - UPDATE OUTPUTS
0137   20CA           00753         CALL    RECEIVE                 ; RECEIVE TRANSMISSION 
0138   1803 2932      00754         BC      M_LOOP                  ; CHECK IF TRANSMISSION VALID
                      00755 
013A                  00756 M_SEARCH
013A   01A2           00757         CLRF    TXNUM                   ; TEST FIRST POSITION
                      00758 ; ******* COMPARE LOWER WORD OF SERIAL NUMBER ********
013B                  00759 M_SERIAL
013B   201D           00760         CALL    TX_LOOKUP               ; GET TX BASE ADDRESS
013C   14A1           00761         BSF             ADDRESS,1               ; ADD 2 TO BASE ADDRESS
013D   2060           00762         CALL    EEREAD                  ; READ LOWER 16-BITS OF SER# FROM EEPROM
                      00763                     
013E   0831           00764         MOVFW   TMP1                    ; COMPARE RX AND EEPROM VALUES
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 16


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

013F   062E           00765         XORWF   SER_2,W
0140   1D03 2954      00766         BNZ             M_NEXT                  ; IF NOT EQUAL CHECK NEXT
0142   0832           00767         MOVFW   TMP2                    ; COMPARE RX AND EEPROM VALUES
0143   062D           00768         XORWF   SER_3,W
0144   1D03 2954      00769         BNZ             M_NEXT                  ; IF NOT EQUAL CHECK NEXT
                      00770         
                      00771 ; ******* COMPARE UPPER WORD OF SERIAL NUMBER ********
0146                  00772 M_SERIAL2
0146   0AA1           00773         INCF    ADDRESS,F               ; POINT TO NEXT ENTRY 
0147   2060           00774         CALL    EEREAD                  ; READ UPPER 16-BITS OF SER# FROM EEPROM
                      00775 
0148   0831           00776         MOVFW   TMP1                    ; COMPARE RX AND EEPROM VALUES
0149   0630           00777         XORWF   SER_0,W
014A   1D03 2954      00778         BNZ     M_NEXT                  ; IF NOT EQUAL CHECK NEXT
                      00779 
014C   0832           00780         MOVFW   TMP2                    ; COMPARE RX AND EEPROM VALUES
014D   062F           00781         XORWF   SER_1,W
014E   1D03 2954      00782         BNZ     M_NEXT                  ; IF NOT EQUAL CHECK NEXT
                      00783 
0150   1CA0           00784         BTFSS   FLAGS,LRNF              ; LEARN MODE
0151   295C           00785         GOTO    M_HOP                   ; FOUND TRANSMITTER - DECRYPT
                      00786 
0152   15A0           00787         BSF             FLAGS,RELEARN           ; SET RELEARN FLAG
0153   29B9           00788         GOTO    LEARN_F                 ; FOUND TRANSMITTER - LEARN
                      00789                 
                      00790 ; **** SEARCH NEXT POSITION FOR SERIAL NUMBER *****
0154                  00791 M_NEXT  
0154   0AA2           00792         INCF    TXNUM,F                 ; POINT TO NEXT TRANSMITTER POSITION
0155   300F           00793         MOVLW   MAX_USERS               ; TEST FOR LAST POSITION
0156   0222           00794         SUBWF   TXNUM,W                 
0157   1C03           00795         BTFSS   STATUS,C                ; NOT FOUND IN MAP
0158   293B           00796         GOTO    M_SERIAL                ; TRY NEXT POSITION
0159                  00797 M_NF
0159   1CA0           00798         BTFSS   FLAGS,LRNF              ; LEARN MODE
015A   2932           00799         GOTO    M_LOOP                  ; NO... INVALID SERIAL NUMBER 
015B   29AF           00800         GOTO    LEARN_NF                ; NEW TRANSMITTER - USE POINTER FOR LEARN
                      00801 
                      00802 ; ********** DECRYPT HOPCODE *********************
015C                  00803 M_HOP   
015C   2077           00804         CALL    DECRYPT                 ; DECRYPT HOPCODE 
                      00805 
                      00806 ; ********* TEST DICRIMINATION VALUE *************
015D   082D           00807 M_DIS   MOVFW   SER_3                   ; SERIAL NUBER LSB MUST BE EQUAL
015E   062B           00808         XORWF   CODEE,W                 ; TO DISCRIMINATION VALUE
015F   1D03 2932      00809         BNZ     M_LOOP
                      00810 
                      00811 ; *************** CHECK COUNTERS VALID ************
0161   1120           00812         BCF     FLAGS,SEC_CNT           ; CHECK FIRST COUNTER
0162                  00813 M_CNT   
0162   201D           00814         CALL    TX_LOOKUP               ; POINT LOWER 16 BIT COUNTER
0163   1920           00815         BTFSC   FLAGS,SEC_CNT           ; IF SECOND COUNTER IS USED
0164   0AA1           00816         INCF    ADDRESS,F               ; INCREMENT ADDRESS     
0165   2060           00817         CALL    EEREAD                  ; READ LOWER 16 BIT COUNTER FROM EEPROM
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 17


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00818 
                      00819 ; ************ CHECK COUNTER WINDOWS ***********
0166                  00820 M_SUB
0166   0832           00821         MOVFW   TMP2                    ; 16 BIT COUNTER SUBSTRACTION
0167   0229           00822         SUBWF   CNTR_LW,W
0168   00B2           00823         MOVWF   TMP2                    
0169   1C03           00824         SKPC                            ; SKIP IF NO BORROW
016A   0AB1           00825         INCF    TMP1,F                  ; ... ELSE INCR HI BYTE
016B   0831           00826         MOVFW   TMP1
016C   022A           00827         SUBWF   CNTR_HI,W
016D   00B1           00828         MOVWF   TMP1
                      00829 
016E   1031           00830         BCF     TMP1,0                  ; MAKE ACCEPTED WINDOW 512
                      00831 
016F                  00832 M_CHECK0
016F   0831           00833         MOVFW   TMP1                    ; TEST IF IN WINDOW ( UPPER BYTE )
0170   1903           00834         BTFSC   STATUS,Z
0171   2976           00835         GOTO    M_CHECK2                ; GO AND CHECK LOWER BYTE
                      00836 
0172   1920           00837         BTFSC   FLAGS,SEC_CNT           ; IF SECOND COUNTER
0173   2932           00838         GOTO    M_LOOP                  ; ERROR - GOTO MAIN LOOP                
                      00839 
0174   1520           00840         BSF     FLAGS,SEC_CNT           ; SET FLAG FOR SECOND COUNTER CHECK
0175   2962           00841         GOTO    M_CNT                   ; AND CHECK IT
                      00842 
0176                  00843 M_CHECK2
0176   0832           00844         MOVFW   TMP2                    ; CHECK LOWER BYTE
0177   1903 298C      00845         BZ      M_TZERO                         ; IF REPEAT - RESET TIMEOUT COUNTER
                      00846 
                      00847 ; ************ UPDATE EEPROM COUNTER ***********
0179                  00848 M_UPDATE
0179   201D           00849         CALL    TX_LOOKUP                       ; GET CURRENT TX BASE ADDRESS
017A   20C5           00850         CALL    LOAD_CNT_VALS           ; LOAD COUNTER VALUES
017B   203C           00851         CALL    EEWRITE                         ; UPDATE FIRST COUNTER
017C   20C5           00852         CALL    LOAD_CNT_VALS           ; LOAD COUNTER VALUES   
017D   203C           00853         CALL    EEWRITE                         ; UPDATE SECOND COUNTER
                      00854 
                      00855 ; ******** UPDATE OUTPUT WITH CURRENT BUTTON CODE ********
                      00856 
017E                  00857 M_OUTPUT 
017E   30F0           00858         MOVLW   0F0H                            ; MASK ONLY BUTTON CODES
017F   05AC           00859         ANDWF   FUNC,1
0180   0EAC           00860         SWAPF   FUNC,1                          ; GET BUTTON CODE FROM FUNC BYTE
                      00861         
0181   182C           00862         BTFSC   FUNC,0                          ; CHANGE BUTTON TO S-OUTPUT FORMAT
0182   162C           00863         BSF     FUNC,4                                  ; [ S2 S1 S0 S3 ]
0183   1003           00864         CLRC                            
0184   0C2C           00865         RRF     FUNC,W
                      00866         
0185                  00867 M_OUTPUT1
0185   00C0           00868         movwf   flash_flags
0186   1C40           00869         btfss   flash_flags,0
0187   298B           00870         goto    zhuiyu
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 18


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0188   30AA           00871         movlw   0aah
0189   0087           00872         movwf   PORTC
018A   298C           00873         goto    M_TZERO
018B                  00874 zhuiyu
018B   0187           00875         clrf    PORTC
018C                  00876 M_TZERO
018C   01A7           00877         CLRF    CNT_HI                  ; RESET RTCC CLOCK
018D   01A8           00878         CLRF    CNT_LW                  
                      00879 
018E                  00880 M_END   
018E   2932           00881         GOTO    M_LOOP                          ; WAIT FOR NEXT TRANMISSION
                      00882 
                      00883 ;===========================================================================
                      00884 ;
                      00885 ; FUNCTION      : LEARN ()                              
                      00886 ;
 

⌨️ 快捷键说明

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