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

📄 p676_koq.lst

📁 PIC16f676/630移植的keeloq滚动码汇编程序,节省一个外部EEPROM,并增加I/O端口.
💻 LST
📖 第 1 页 / 共 5 页
字号:
                      00523 ;
                      00524 ; NOTE          : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
                      00525 ;
                      00526 ;===========================================================================
                      00527 
00C5                  00528 LOAD_CNT_VALS
00C5   082A           00529         MOVFW   CNTR_HI                 ; LOAD MSB OF COUNTER
00C6   00B1           00530         MOVWF   TMP1
00C7   0829           00531         MOVFW   CNTR_LW                 ; LOAD LSB OF COUNTER
00C8   00B2           00532         MOVWF   TMP2
00C9   3400           00533         RETLW   0
                      00534 
                      00535 ;===========================================================================
                      00536 ;
                      00537 ; FUNCTION      : RECEIVE()                             
                      00538 ;
                      00539 ; DESCRIPTION   : RECEPTION ROUTINE FOR PWM TRANSMISSIONS
                      00540 ;
                      00541 ; NOTE          : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
                      00542 ;
                      00543 ;===========================================================================
                      00544 
00CA                  00545 RECEIVE
                      00546 
                      00547 ;******** WAIT FOR HEADER AND CALIBRATE *******************
                      00548 
00CA   1C85           00549         BTFSS   PORTA,RFIN              ; INPUT LOW?
00CB   292B           00550         GOTO    RMT_0                   ; YES; RECEIVE ERROR
                      00551 
00CC   300A           00552         MOVLW   10                      ; 10 ms TIMER
00CD   00A5           00553         MOVWF   CNT1
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 12


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00CE                  00554 RCV0
00CE   30C8           00555         MOVLW   200
00CF   00A4           00556         MOVWF   CNT0
00D0                  00557 RCV1
00D0   1C85           00558         BTFSS   PORTA,RFIN              ; [2] INPUT HIGH?
00D1   28D6           00559         GOTO    RCV2                    ; [0] NO, JUMP OUT OF LOOP
00D2   0BA4           00560         DECFSZ  CNT0,1                  ; [1] YES, CONTINUE WITH TIMING LOOP
00D3   28D0           00561         GOTO    RCV1                    ; [2] 5 us X CNT0
00D4   0BA5           00562         DECFSZ  CNT1,1                  ; [0] DO 1 ms LOOP CNT1 TIMES
00D5   28CE           00563         GOTO    RCV0                    ; [0]
                      00564 
00D6                  00565 RCV2
00D6   01A4           00566         CLRF    CNT0                    ; [1] CLEAR CALIB COUNTER LOW BYTE
00D7   01A5           00567         CLRF    CNT1                    ; [1] CLEAR CALIB COUNTER HIGH BYTE
                      00568 
                      00569 ;*************************************************************************
                      00570 ;  2.5 IS AVERAGE FOR DETECTING FALLING EDGE IN RCV1
                      00571 ;  2   INSTRUCTIONS FOR JUMP OUT RCV1 TO RCV2
                      00572 ;  2   INSTRUCTIONS FOR RCV2 - CLEAR CALIBRATION COUNTER
                      00573 ;  TOTAL 6.5 INSTRUCTIONS < 1 CALIBRATION LOOP SO DISCARD
                      00574 ;*************************************************************************
                      00575 
00D8                  00576 RCV3
00D8   1885           00577         BTFSC   PORTA,RFIN              ; [2][2] INPUT HIGH?
00D9   28E2           00578         GOTO    RCV6                    ; [0][0] YES--END CALIBRATION
00DA   0AA4           00579         INCF    CNT0,1                  ; [1] INCREMENT 16BIT COUNTER   
00DB   1903           00580         SKPNZ                           ; [2]
00DC   0AA5           00581         INCF    CNT1,1                  ; [0]
00DD   0064           00582         CLRWDT                          ; [1] RESET WATCH DOG TIMER
00DE   0000           00583         NOP                             ; [1]
00DF   1DA5           00584         BTFSS   CNT1,3                  ; [1]
00E0   28D8           00585         GOTO    RCV3                    ; [2]
00E1   292B           00586         GOTO    RMT_0                   ; [0]
                      00587                                         ; TOTAL = 10
                      00588                                         
00E2                  00589 RCV6
00E2   1003           00590         CLRC                            ; [1] DIVIDE CNT1:CNT0 BY 8 (600/8=75)
00E3   0CA5           00591         RRF     CNT1,1                  ; [1]
00E4   0CA4           00592         RRF     CNT0,1                  ; [1]
00E5   0CA5           00593         RRF     CNT1,1                  ; [1]
00E6   0CA4           00594         RRF     CNT0,1                  ; [1]
00E7   0CA5           00595         RRF     CNT1,1                  ; [1]
00E8   0CA4           00596         RRF     CNT0,1                  ; [1] 
                      00597                                         
00E9   3007           00598         MOVLW   MIN/80                  ; [1]
00EA   0224           00599         SUBWF   CNT0,W                  ; [1]
00EB   1C03           00600         BTFSS   STATUS,C                ; [2] NEGATIVE?
00EC   292B           00601         GOTO    RMT_0                   ; [0] YES--HEADER SHORTER THAN MIN.
                      00602                                         ; TOTAL = 11
                      00603 ; ************* VALID HEADER RECEIVED *********************
00ED                  00604 RCV7
00ED   3040           00605         MOVLW   NBITS                   ; [1] VALID START MARKER WAS RECEIVED
00EE   00A5           00606         MOVWF   CNT1                    ; [1]
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 13


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00EF   0824           00607         MOVF    CNT0,W                  ; [1]
00F0   00A6           00608         MOVWF   CNT2                    ; [1] CNT2 = CNT0
00F1   3006           00609         MOVLW   6H                      ; [1] SEE NOTE BELOW
00F2   02A6           00610         SUBWF   CNT2,1                  ; [1]
00F3   2905           00611         GOTO    DL1                     ; [2] COMPENSATE FOR FIRST BIT
                      00612                                         ; TOTAL = 8
                      00613 
                      00614 ;**********************************************************************************
                      00615 ;  2.5 IS AVERAGE PLAY BETWEEN RISING EDGE AND JUMP OUT OF CALIBRATION LOOP.
                      00616 ;  2   FOR JUMP OUT OF RCV3 TO RCV6
                      00617 ; 11   INSTRUCTIONS FOR RVC6 - CAIBRATION COUNTER DIVIDE
                      00618 ;  8   INSTRUCTIONS FOR RCV7 - COMPENSATE FOR POST CALIBRATION CALCUATIONS
                      00619 ; TOTAL 22.5 INSTRUCTIONS BETWEEN RISING EDGE AND ENTERING DL1
                      00620 ;  THEREFORE SUBTRACT 22.5/4 = 5.625 TO COMPENSATE FOR POST CALCULATION ON 1ST BIT
                      00621 ;**********************************************************************************
                      00622 
00F4                  00623 RCV8                                    
00F4   3004           00624         MOVLW   4H                      ; [1] WAIT A MAXIMUM OF 4 Te
00F5   00A3           00625         MOVWF   TMP_CNT                 ; [1] SET TEMP LOOP COUNTER
                      00626 
00F6                  00627 RCV10A
00F6   0824           00628         MOVFW   CNT0                    ; [1] and CSR processing
00F7   00A6           00629         MOVWF   CNT2                    ; [1] Refer to explanation above
                      00630 
00F8                  00631 RCV10B
00F8   1885           00632         BTFSC   PORTA,RFIN              ; [2] Wait for rising edge
00F9   2902           00633         GOTO    RCV11                   ; [0] Edge found--Process
00FA   0064           00634         CLRWDT                          ; [1] Clear watchdog Timer
00FB   1885           00635         BTFSC   PORTA,RFIN              ; [2] Wait for Next rising edge
00FC   2902           00636         GOTO    RCV11                   ; [0] Edge found--Process
00FD   0BA6           00637         DECFSZ  CNT2,1                  ; [1] Decrement Timeout counter
00FE   28F8           00638         GOTO    RCV10B                  ; [2] Loop Back
                      00639                                         ; TOTAL = 8, RFIN CHECKED EVERY 4uS ON AVERAGE
                      00640 
00FF   0BA3           00641         DECFSZ  TMP_CNT,1               ; [1] ALL Te PERIODS
0100   28F6           00642         GOTO    RCV10A                  ; [2] ... NO, THEN WAIT FOR NEXT ONE
0101   292B           00643         GOTO    RMT01                   ; [0] ... YES, [0] TIMEOUT--no edge found
                      00644 
0102                  00645 RCV11
0102   3003           00646         MOVLW   3H                      ; [1]  SEE NOTE BELOW
0103   0224           00647         SUBWF   CNT0,W                  ; [1]
0104   00A6           00648         MOVWF   CNT2                    ; [1]
                      00649 
                      00650 ;*************************************************************************
                      00651 ; 2   SETUP OF TEMP LOOP COUNTER  ( ONLY ONCE )
                      00652 ; 2   SETUP TE LOOP COUNTER       ( MAX 4 )
                      00653 ; 3   DECREMENT TEMP LOOP COUNTER ( MAX 4 )
                      00654 ; 4   IS THE AVERAGE PLAY BETWEEN EDGE AND EDJE BEING DETECTED IN RCV9
                      00655 ; 2   JUMP OUT OF RCV10B TO RCV11
                      00656 ; 3   FOR RCV11
                      00657 ; TOTAL 10 INSTRUCTIONS BETWEEN EDGE AND ENTERING DL1
                      00658 ; THEREFORE SUBTRACT 10/4 = 2.5 => 3 DL1 LOOPS TO COMPENSATE FOR 
                      00659 ;*************************************************************************
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 14


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00660 
0105                  00661 DL1
0105   0064           00662         CLRWDT                          ; [1] RESET WATCHDOG TIMER
0106   0BA6           00663         DECFSZ  CNT2,1                  ; [1] [2, IF SKIP]
0107   2905           00664         GOTO    DL1                     ; [2] CNT0 X 4 us
                      00665 
0108                  00666 SAMPLE1
0108   1C85           00667         BTFSS   PORTA,RFIN              ; [2] INPUT HIGH?  FIRST SAMPLE
0109   292B           00668         GOTO    RMT01                   ; [0] NO--ERROR
                      00669 
010A   0824           00670         MOVF    CNT0,W                  ; [1] CALIBRATION COUNTER
010B   00A6           00671         MOVWF   CNT2                    ; [1] (NOMINALLY 75 FOR 300 us PULSE)
010C   03A6           00672         DECF    CNT2,1                  ; [1] SUBTRACT 2 FROM FINAL CALIB COUNTER TO COMPENATE FOR THIS
010D   290E           00673         GOTO    $+1                             ; [2]
010E   0000           00674         NOP                                             ; [1]
                      00675                                                         ; TOTAL = 8 => 1 LOOP COUNTER
010F                  00676 DL2
010F   0064           00677         CLRWDT                          ; [1] RESET WATCHDOG TIMER
0110   2911           00678         GOTO    $+1                                             ; [2] WASTE TIME
0111   2912           00679         GOTO    $+1                                             ; [2] WASTE TIME
0112   0BA6           00680         DECFSZ  CNT2,1                                  ; [1]
0113   290F           00681         GOTO    DL2                     ; [2] CNT0 X 8 us [ CNT0 x Te ]
                      00682 
0114                  00683 SAMPLE2
0114   1020           00684         BCF     FLAGS,BITIN             ; [1]   CLEAR BIT POSITION
0115   1C85           00685         BTFSS   PORTA,RFIN              ; [1.5] LEAVE 0 IF LINE HIGH
0116   1420           00686         BSF     FLAGS,BITIN             ; [0.5] MAKE 1 IF LINE LOW
                      00687                                                                         ; SUB TOTAL = 3 CYCLES
                      00688 
0117   2014           00689         CALL    ROT_SHIFT       ; [11]+[2] CSR SHIFT + CALL
0118   13B0           00690         BCF             CSR7,7                  ; [1]
0119   1820           00691         BTFSC   FLAGS,BITIN             ; [1.5]
011A   17B0           00692         BSF     CSR7,7                  ; [0.5]
                      00693                                                         ; SUB TOTAL = 16 CYCLES
                      00694 
                      00695 
011B   0824           00696         MOVF    CNT0,W                  ; [1] CALIBRATION COUNTER
011C   00A6           00697         MOVWF   CNT2                    ; [1] (NOMINALLY 75 FOR 300 us PULSE)
011D   3003           00698         MOVLW   3                                               ; [1] SEE CALCULATION BELOW
011E   02A6           00699         SUBWF   CNT2,1                                  ; [1]
011F   0000           00700         NOP                                                             ; [1]
                      00701                                                                         ; SUB TOTAL = 5 CYCLE
                      00702                                                                         ; TOTAL = 24 => 24/8 = 3 LOOP CO
                            UNTERS
                      00703                                          
                      00704 ;*************************************************************************
                      00705 ; TOTAL = 24 INSTRUCTIONS
                      00706 ; SUBTRACT 24/8 = 3 TO COMPESATE FOR UPDATEING CSR AND OTHER PROCESSING 
                      00707 ; AFTER DATA SAMPLE IS TAKEN.
                      00708 ;*************************************************************************
                      00709 

⌨️ 快捷键说明

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