📄 secsys14.lst
字号:
00378
00000040 00379 KEYBASE EQU $ ; BASE ADDRESS 40H
00000040 00380 MAS_KEY EQU $ ; MASTER KEY BASE ADDRESS
0040 08EF 00381 RETLW 0EFH ; MKEY_0 LSB
0041 08CD 00382 RETLW 0CDH ; MKEY_1
0042 08AB 00383 RETLW 0ABH ; MKEY_2
0043 0889 00384 RETLW 089H ; MKEY_3
0044 0867 00385 RETLW 067H ; MKEY_4
0045 0845 00386 RETLW 045H ; MKEY_5
0046 0823 00387 RETLW 023H ; MKEY_6
0047 0801 00388 RETLW 001H ; MKEY_7 MSB
00389
00000048 00390 EE_KEY EQU $ ; EEPROM KEY BASE ADDRESS
0048 0888 00391 RETLW 088H ; EKEY_0 LSB
0049 0877 00392 RETLW 077H ; EKEY_1
004A 0866 00393 RETLW 066H ; EKEY_2
004B 0855 00394 RETLW 055H ; EKEY_3
004C 0844 00395 RETLW 044H ; EKEY_4
004D 0833 00396 RETLW 033H ; EKEY_5
004E 0822 00397 RETLW 022H ; EKEY_6
004F 0811 00398 RETLW 011H ; EKEY_7 MSB
00399
00400 ;**************************************************************************
00401 ; FUNCTION : RECEIVE
00402 ;
00403 ; DESCRIPTION : RECEIVE ROUTINE FOR KEELOQ TRANSMISSIONS
00404 ;
00405 ; PAGE : 0
00406 ;
00407 ;**************************************************************************
0050 00408 RECEIVE
00409
00410 ;******** WAIT FOR HEADER AND CALIBRATE *******************
00411
0050 04BF 00412 BCF FLAGS,NTQ106 ; RESET NTQ106 TRANSMISSION FLAG
0051 0765 00413 BTFSS PORTA,RFIN ; INPUT LOW?
0052 0AB2 00414 GOTO RMT_0 ; YES; RECEIVE ERROR
00415
0053 0C0A 00416 MOVLW 10 ; 10 ms TIMER
0054 0039 00417 MOVWF CNT1
0055 00418 RCV0
0055 0CC8 00419 MOVLW 200
0056 0038 00420 MOVWF CNT0
0057 00421 RCV1
0057 0765 00422 BTFSS PORTA,RFIN ; [2] INPUT HIGH?
0058 0A5D 00423 GOTO RCV2 ; [0] NO, JUMP OUT OF LOOP
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0059 02F8 00424 DECFSZ CNT0,1 ; [1] YES, CONTINUE WITH TIMING LOOP
005A 0A57 00425 GOTO RCV1 ; [2] 5 us X CNT0
005B 02F9 00426 DECFSZ CNT1,1 ; [0] DO 1 ms LOOP CNT1 TIMES
005C 0A55 00427 GOTO RCV0 ; [0]
00428
005D 00429 RCV2
005D 0078 00430 CLRF CNT0 ; [1] CLEAR CALIB COUNTER LOW BYTE
005E 0079 00431 CLRF CNT1 ; [1] CLEAR CALIB COUNTER HIGH BYTE
00432
00433 ;*************************************************************************
00434 ; 2.5 IS AVERAGE FOR DETECTING FALLING EDGE IN RCV1
00435 ; 2 INSTRUCTIONS FOR JUMP OUT RCV1 TO RCV2
00436 ; 2 INSTRUCTIONS FOR RCV2 - CLEAR CALIBRATION COUNTER
00437 ; TOTAL 6.5 INSTRUCTIONS < 1 CALIBRATION LOOP SO DISCARD
00438 ;*************************************************************************
00439
005F 00440 RCV3
005F 0665 00441 BTFSC PORTA,RFIN ; [2][2] INPUT HIGH?
0060 0A69 00442 GOTO RCV6 ; [0][0] YES--END CALIBRATION
0061 02B8 00443 INCF CNT0,1 ; [1] INCREMENT 16BIT COUNTER
0062 0643 00444 SKPNZ ; [2]
0063 02B9 00445 INCF CNT1,1 ; [0]
0064 0004 00446 CLRWDT ; [1] RESET WATCH DOG TIMER
0065 0000 00447 NOP ; [1]
0066 0779 00448 BTFSS CNT1,3 ; [1]
0067 0A5F 00449 GOTO RCV3 ; [2]
0068 0AB2 00450 GOTO RMT_0 ; [0]
00451 ; TOTAL = 10
00452
0069 00453 RCV6
0069 0403 00454 CLRC ; [1] DIVIDE CNT1:CNT0 BY 8 (600/8=75)
006A 0339 00455 RRF CNT1,1 ; [1]
006B 0338 00456 RRF CNT0,1 ; [1]
006C 0339 00457 RRF CNT1,1 ; [1]
006D 0338 00458 RRF CNT0,1 ; [1]
006E 0339 00459 RRF CNT1,1 ; [1]
006F 0338 00460 RRF CNT0,1 ; [1]
00461
0070 0C07 00462 MOVLW MIN/80 ; [1]
0071 0098 00463 SUBWF CNT0,W ; [1]
0072 0703 00464 BTFSS STATUS,CARRY ; [2] NEGATIVE?
0073 0AB2 00465 GOTO RMT_0 ; [0] YES--HEADER SHORTER THAN MIN.
00466 ; TOTAL = 11
00467 ; ************* VALID HEADER RECEIVED *********************
0074 00468 RCV7
0074 0C42 00469 MOVLW NBITS ; [1] VALID START MARKER WAS RECEIVED
0075 0039 00470 MOVWF CNT1 ; [1]
0076 0218 00471 MOVF CNT0,W ; [1]
0077 003A 00472 MOVWF CNT2 ; [1] CNT2 = CNT0
0078 0C06 00473 MOVLW 6H ; [1] SEE NOTE BELOW
0079 00BA 00474 SUBWF CNT2,1 ; [1]
007A 0A8C 00475 GOTO DL1 ; [2] COMPENSATE FOR FIRST BIT
00476 ; TOTAL = 8
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00477
00478 ;**********************************************************************************
00479 ; 2.5 IS AVERAGE PLAY BETWEEN RISING EDGE AND JUMP OUT OF CALIBRATION LOOP.
00480 ; 2 FOR JUMP OUT OF RCV3 TO RCV6
00481 ; 11 INSTRUCTIONS FOR RVC6 - CAIBRATION COUNTER DIVIDE
00482 ; 8 INSTRUCTIONS FOR RCV7 - COMPENSATE FOR POST CALIBRATION CALCUATIONS
00483 ; TOTAL 22.5 INSTRUCTIONS BETWEEN RISING EDGE AND ENTERING DL1
00484 ; THEREFORE SUBTRACT 22.5/4 = 5.625 TO COMPENSATE FOR POST CALCULATION ON 1ST BIT
00485 ;**********************************************************************************
00486
007B 00487 RCV8
007B 0C04 00488 MOVLW 4H ; [1] WAIT A MAXIMUM OF 4 Te
007C 002E 00489 MOVWF TMP_CNT ; [1] SET TEMP LOOP COUNTER
00490
007D 00491 RCV10A
007D 0218 00492 MOVFW CNT0 ; [1] and CSR processing
007E 003A 00493 MOVWF CNT2 ; [1] Refer to explanation above
00494
007F 00495 RCV10B
007F 0665 00496 BTFSC PORTA,RFIN ; [2] Wait for rising edge
0080 0A89 00497 GOTO RCV11 ; [0] Edge found--Process
0081 0004 00498 CLRWDT ; [1] Clear watchdog Timer
0082 0665 00499 BTFSC PORTA,RFIN ; [2] Wait for Next rising edge
0083 0A89 00500 GOTO RCV11 ; [0] Edge found--Process
0084 02FA 00501 DECFSZ CNT2,1 ; [1] Decrement Timeout counter
0085 0A7F 00502 GOTO RCV10B ; [2] Loop Back
00503 ; TOTAL = 8, RFIN CHECKED EVERY 4uS ON AVERAGE
00504
0086 02EE 00505 DECFSZ TMP_CNT,1 ; [1] ALL Te PERIODS
0087 0A7D 00506 GOTO RCV10A ; [2] ... NO, THEN WAIT FOR NEXT ONE
0088 0AB4 00507 GOTO RMT01 ; [0] ... YES, [0] TIMEOUT--no edge found
00508
0089 00509 RCV11
0089 0C03 00510 MOVLW 3H ; [1] SEE NOTE BELOW
008A 0098 00511 SUBWF CNT0,W ; [1]
008B 003A 00512 MOVWF CNT2 ; [1]
00513
00514 ;*************************************************************************
00515 ; 2 SETUP OF TEMP LOOP COUNTER ( ONLY ONCE )
00516 ; 2 SETUP TE LOOP COUNTER ( MAX 4 )
00517 ; 3 DECREMENT TEMP LOOP COUNTER ( MAX 4 )
00518 ; 4 IS THE AVERAGE PLAY BETWEEN EDGE AND EDJE BEING DETECTED IN RCV9
00519 ; 2 JUMP OUT OF RCV10B TO RCV11
00520 ; 3 FOR RCV11
00521 ; TOTAL 10 INSTRUCTIONS BETWEEN EDGE AND ENTERING DL1
00522 ; THEREFORE SUBTRACT 10/4 = 2.5 => 3 DL1 LOOPS TO COMPENSATE FOR
00523 ;*************************************************************************
00524
008C 00525 DL1
008C 0004 00526 CLRWDT ; [1] RESET WATCHDOG TIMER
008D 02FA 00527 DECFSZ CNT2,1 ; [1] [2, IF SKIP]
008E 0A8C 00528 GOTO DL1 ; [2] CNT0 X 4 us
00529
MPASM 02.50 Released SECSYS14.ASM 1-11-2002 15:33:39 PAGE 11
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
008F 00530 SAMPLE1
008F 0765 00531 BTFSS PORTA,RFIN ; [2] INPUT HIGH? FIRST SAMPLE
0090 0AB4 00532 GOTO RMT01 ; [0] NO--ERROR
00533
0091 0218 00534 MOVF CNT0,W ; [1] CALIBRATION COUNTER
0092 003A 00535 MOVWF CNT2 ; [1] (NOMINALLY 75 FOR 300 us PULSE)
0093 00FA 00536 DECF CNT2,1 ; [1] SUBTRACT 2 FROM FINAL CALIB COUNTER TO COMPENATE FOR THIS
0094 0A95 00537 GOTO $+1 ; [2]
0095 0000 00538 NOP ; [1]
00539 ; TOTAL = 8 => 1 LOOP COUNTER
0096 00540 DL2
0096 0004 00541 CLRWDT ; [1] RESET WATCHDOG TIMER
0097 0A98 00542 GOTO $+1 ; [2] WAISTE TIME
0098 0A99 00543 GOTO $+1 ; [2] WAISTE TIME
0099 02FA 00544 DECFSZ CNT2,1 ; [1]
009A 0A96 00545 GOTO DL2 ; [2] CNT0 X 8 us [ CNT0 x Te ]
00546
009B 00547 SAMPLE2
009B 040F 00548 BCF FLAGS1,BITIN ; [1] CLEAR BIT POSITION
009C 0765 00549 BTFSS PORTA,RFIN ; [1.5] LEAVE 0 IF LINE HIGH
009D 050F 00550 BSF FLAGS1,BITIN ; [0.5] MAKE 1 IF LINE LOW
00551 ; SUB TOTAL = 3 CYCLES
00552
009E 090A 00553 CALL ROT_SHIFT ; [11]+[2] CSR SHIFT + CALL
009F 04EC 00554 BCF CSR8,7 ; [1]
00A0 060F 00555 BTFSC FLAGS1,BITIN ; [1.5]
00A1 05EC 00556 BSF CSR8,7 ; [0.5]
00557 ; SUB TOTAL = 16 CYCLES
00558
00559
00A2 0218 00560 MOVF CNT0,W ; [1] CALIBRATION COUNTER
00A3 003A 00561 MOVWF CNT2 ; [1] (NOMINALLY 75 FOR 300 us PULSE)
00A4 0C03 00562 MOVLW 3 ; [1] SEE CALCULATION BELOW
00A5 00BA 00563 SUBWF CNT2,1 ; [1]
00A6 0000 00564 NOP ; [1]
00565 ; SUB TOTAL = 5 CYCLE
00566 ; TOTAL = 24 => 24/8 = 3 LOOP COUNTERS
00567
00568 ;*************************************************************************
00569 ; TOTAL = 24 INSTRUCTIONS
00570 ; SUBTRACT 24/8 = 3 TO COMPESATE FOR UPDATEING CSR AND OTHER PROCESSING
00571 ; AFTER DATA SAMPLE IS TAKEN.
00572 ;*************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -