滚动码解码源程序和资料下载_第1页
滚动码解码源程序和资料下载_第2页
滚动码解码源程序和资料下载_第3页
滚动码解码源程序和资料下载_第4页
滚动码解码源程序和资料下载_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MICROCHIP KEELOQ CODE HOPPING SIMPLE DECODER LEGAL NOTICE The information contained in this document is proprietary and confidential information of Microchip Technology Inc Therefore all parties are required to sign a non disclosure agreement before receiving this document The information contained in this Application Note is for suggestion only It is your responsibility to ensure that your application meets with your specifications No representation or warranty is given and no liability is assumed by Microchip Technology Incorporated with respect to the accuracy or use of such information or infringement of patents or other intellectual property arising from such use or otherwise SIMPLE DECODER WITH ONE STEP LEARN AND SINGLE KEY PROGRAM INFORMATION FILE SIMDEC11 ASM DATE 8 SEPTEMBER 1998 VER 1 1 CKSM XXXXH FUSES RC WDT ON CP ON ASM MPASM VERSION 2 13 USED INCL NONE TABS 8 CONFIGURATION CONTROL VERSION 1 1 S DAWSON FILE SIMDEC11 ASM DATE 8 SEPTEMBER 1998 VER 1 1 FUSES RC WDT ON CP ON ASM MPASM VERSION 2 13 USED INCL NONE CHANGES 1 CODE HAS BECOME A RESERVED WORD IN MPASM CHANGED IT TO DISC 2 ADDED DISCLAIMER DATEVERSIONLINECHANGES 08 14 961 0FIRST VERSION LIST P 16C54 R DEC USER DEFINITIONS MAX USERSEQU15 This is the maximum number of transmitters that the system is able to learn 1 to 15 GENERAL PURPOSE REGISTERS IND EQU00H INDIRECT ADDRESS REGISTER RTCCEQU01H REAL TIME COUNTER CLOCK PC EQU02H PROGRAM COUNTER STATUS EQU03H STATUS REGISTER FSR EQU04H FILE SELECT REGISTER PORTA EQU 05H PORT A PORTB EQU 06H PORT B USER DEFINED REGISTER FLAGSEQU07H USER FLAG REGISTER ADDRESSEQU08H ADDRESS REGISTER TXNUM EQU09H CURRENT TX OUTBYTEQU0AH GENERAL DATA REGISTER MASKEQUOUTBYT MASK REGISTER USED IN DECRYPTION TMP CNTEQUOUTBYT TEMPORARY COUNTER COUNTER REGISTERS CNT0 EQU 0BH LOOP COUNTERS CNT1 EQU0CH CNT2 EQU 0DH CNT HI EQU0EH 16 BIT CLOCK COUNTER CNT LWEQU0FH CIRCULAR BUFFER REGISTER CSR0 EQU 10H 64 BIT RECEIVE SHIFT REGISTER CSR1 EQU 11H CSR2 EQU 12H CSR3 EQU 13H CSR4 EQU 14H CSR5 EQU 15H CSR6 EQU 16H CSR7 EQU 17H TEMP REGISTERS TMP1EQU18H TEMP REGISTER FOR READ AND WRITE TMP2EQU19H TEMP REGISTER FOR READ AND WRITE REGEQU1AH NOT USED REG1EQU1BH NOT USED KEY0EQU1CH 64 BIT KEY SHIFT REGISTER KEY1EQU1DH KEY2EQU1EH KEY3EQU1FH KEY4EQUCNT2 KEY5EQUCSR5 KEY6EQUCSR6 KEY7EQUCSR7 USER REGISTER RE MAPPINGS HOP1EQUCSR0 32 BIT HOPCODE REGISTER HOP2EQUCSR1 HOP3EQUCSR2 HOP4EQUCSR3 RECEIVED TRANSMISSION OPEN 32 BITS SER 0EQUCSR7 28 BIT SERIAL NUMBER SER 1EQUCSR6 SER 2EQUCSR5 SER 3EQUCSR4 RECEIVED TRANSMISSION ENCRYPTED 32 BITS FUNCEQUCSR3 BUTTON CODE DISCRIMINATION VALUE CNTR HIEQUCSR1 16 BIT RX COUNTER HIGH BYTE CNTR LWEQUCSR0 16 BIT RX COUNTER LOW BYTE EEPROM MEMORY LRNPTREQU01H LEARN POINTER PORTA BIT DEFINITIONS RES0EQU0H RESERVED PIN RFINEQU1H RF INPUT LRNEQU2H LEARN BUTTON LEDEQU3H LEARN INDICATOR LED OUTPUT VALID SIGNAL PORTB BIT DEFINITIONS S0EQU0H S0 OUTPUT S1EQU1H S1 OUTPUT S2EQU2H S2 OUTPUT S3EQU3H S3 OUTPUT DIO EQU4H EEPROM DATA LINE CLKEQU5H EEPROM SERIAL CLOCK CS EQU6H EEPROM CHIP SELECT RES1EQU7H RESERVED PIN COMPILER DEFINES NBITS EQU 64 MAXIMUM TRANSMISSION BIT LENGTH MIN EQU 560 TRANSMISSION HEADER MINIMUM LENGTH 鍿 TRISAEQU0111B PORTA TRI STATE VALUE WRCFG EQU00000000B PORTB EEPROM WRITE TRI STATE VALUE RDCFG EQU00010000B PORTB EEPROM READ TRI STATE VALUE FLAGS DEFINITIONS BITINEQU0H RF BIT VALUE LRNFEQU1H LEARN FLAG SEC CNTEQU2H SECOND COUNTER IS BEING CHECKED RELEARNEQU3H RELEARNING A TRANSMITTER STATUS REGISTER BIT DEFINITIONS C EQU 0 CARRY DC EQU 1 DIGIT CARRY Z EQU 2 ZERO PD EQU 3 POWER DOWN TO EQU 4 TIMEOUT PA0 EQU 5 NOT USED PA1 EQU 6 NOT USED PAGE 0 ORG 00H FUNCTION RESET DESCRIPTION PROGRAM RESET ROUTINE RESET MOVLW000111B SETUP RTCC PRESCALER OPTION CLRFPORTA RESET PORTA CLRFPORTB RESET PORTB MOVLWTRISA SETUP PORTA TRISPORTA MOVLWWRCFG SETUP PORTB TRIS PORTB CLRFFLAGS RESET FLAGS GOTOM LOOP GOTO MAIN PROGRAM LOOP FUNCTION ROT SHIFT DESCRIPTION RIGHT ROTATE 64 BIT RECEIVE SHIFT REGISTER NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE ROT SHIFT RRF CSR7 F RRF CSR6 F RRF CSR5 F RRF CSR4 F RRF CSR3 F RRF CSR2 F RRF CSR1 F RRF CSR0 F RETLW 0 FUNCTION TX LOOKUP DESCRIPTION TRANSMITTER ADDRESS CALCULATION NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE TX LOOKUP MOVFTXNUM W USE TRANSMITTER NUMBER TO CALCULATE MOVWFADDRESS ADDRESS OF TRANSMITER BLOCK CLRC MULTIPLY BY 4 RLFADDRESS F RLFADDRESS F MOVLW04H AND ADD 4 ADDWF ADDRESS F RETLW 0 RETURN FUNCTION TST RTCC DESCRIPTION UPDATE RTCC COUNTER NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE TST RTCC CLRWDT RESET WATCHDOG TIMER MOVLWTRISA UPDATE TRI STATE REGISTER FOR PORTA TRISPORTA BTFSSRTCC 7 TEST FOR 32MS TIMEOUTON RTCC MSB RETLW 0 DO QUICK RETURN TO RECEIVE ROUTINE INCREASE 16 BIT CLOCK TIMER BCFRTCC 7 CLEAR MSB OF RTCC INCFCNT LW F INCREASE 16 COUNTER SKPNZ INCREASE UPPER BYTE IF ZERO OVERFLOW INCFCNT HI F RETLW 0 FUNCTION TST TIMER DESCRIPTION TEST 32MS TIMER AND UPDATE OUTPUTS IF REQUIRED NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE TST TIMER TEST FOR 500 MS TIMEMOUT ON OUTPUTS BTFSSCNT LW 4 TEST FOR 500 MS TIMEOUT GOTOTST 30 IF NOT TEST 30S TIMEOUT MOVLW0F0H ANDWF PORTB F DOWN ALL PULSE OUTPUTS TEST FOR 30 S LEARN TIMEOUT TST 30 BTFSSFLAGS LRNF GOTOTST END BTFSCCNT HI 2 TEST FOR LEARN TIMEOUT GOTORESET IF LEARN TIMEMOUT FORCE SOFT RESET TST END RETLW 0H FUNCTION SENDC DESCRIPTION SEND EEPROM COMMAND NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE SENDC CLRWDT RESET WATCHDOG TIMER BCF PORTB CS RESET CS STATE BCF PORTB CLK RESET CLK STATE BCF PORTB DIO RESET DIO STATE MOVLW WRCFG TRIS PORTB DIO OUTPUT GOTO 1 WAIT FOR OUTPUTS TO SETTLE BSF PORTB CS SELECT EEPROM SETC START BIT 1 MOVLW 9D START BIT 8 DATA BITS MOVWFCNT1 SENDC2 SKPC TEST BIT BCF PORTB DIO WRITE TO DIO SKPNC TEST BIT BSF PORTB DIO WRITE TO DIO GOTO 1 WAIT 2 US RLF OUTBYT F GET NEXT BIT INTO CARRY BSF PORTB CLK CLOCK HIGH GOTO 1 WAIT 2 US GOTO 1 WAIT 2 US BCF PORTB CLK CLOCK LOW DECFSZ CNT1 F LOOP COUNTER GOTOSENDC2 BCF PORTB DIO AVOID CONTENTION WITH READ RETLW 0 FUNCTION EEWRITE DESCRIPTION WRITE 16 BIT VALUE TO EEPROM NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE EEWRITE EEPROM WRITE ENABLE WRITE0 MOVLW30H WRITE ENABLE COMMAND MOVWF OUTBYT CALL SENDC SEND COMMAND TO EEPROM BCF PORTB CS END COMMAND DESELECT WRITE 16 BIT WORD TO EEPROM WRITE1 MOVFW ADDRESS GET EEPROM ADDRESS MOVWFOUTBYT BSF OUTBYT 6 WRITE COMMAND CALL SENDC SEND COMMAND TO EEPROM MOVLW16D 16 DATA BITS MOVWF CNT1 WRITE2 BTFSS TMP1 7 TEST MSB OF 16 BIT WORD BCF PORTB DIO SET DATA BIT BTFSC TMP1 7 ELSE BSF PORTB DIO CLEAR DATA BIT GOTO 1 WAIT 2 US RLF TMP2 F SHIFT LO BYTE BSF PORTB CLK CLOCK HIGH GOTO 1 WAIT 2 US RLF TMP1 F SHIFT HI BYTE BCF PORTB CLK CLOCK LOW DECFSZ CNT1 F GOTOWRITE2 LOOP COUNTER WAITACK BCF PORTB CS END OF WRITE COMMAND DESELECT MOVLW RDCFG TRIS PORTB DIO INPUT BSF PORTB CS CS HIGH TO WAIT FOR ACK WRITE5 BTFSCPORTB DIO CHECK FOR ACK GOTOWRITE6 WDT RESET ON NO ACK GOTOWRITE5 WRITE6 BCF PORTB CS END OF ACK EEPROM WRITE DISABLE MOVLW 000H WRITE DISABLE COMMAND MOVWFOUTBYT CALL SENDC BCF PORTB CS END OF DISABLE COMMAND DESELECT INCFADDRESS F POINT TO NEXT EEPROM ADDRESS BY DEFAULT RETLW 0H FUNCTION EEREAD DESCRIPTION READ 16 BIT VALUE FROM EEPROM NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE EEREAD MOVFW ADDRESS MOVWFOUTBYT BSF OUTBYT 7 COMMAND READ CALL SENDC SEND COMMAND MOVLW RDCFG TRIS PORTB DIO INPUT MOVLW 16D 16 BITS TO READ MOVWFCNT1 READ0 BSF PORTB CLK CLOCK HIGH RLF TMP2 F SHIFT LO BYTE BCF TMP2 0 ASSUME BIT WILL BE 1 BTFSC PORTB DIO READ DIO LINE BSF TMP2 0 COPY BIT TO REGISTER BCF PORTB CLK CLOCK LOW RLF TMP1 F SHIFT HI BYTE DECFSZ CNT1 F LOOP COUNTER GOTOREAD0 BCF PORTB CS END READ CYCLE RETLW 0H FUNCTION DECRYPT DESCRIPTION DECRYPTS 32 BIT HOP1 HOP4 USING CSR0 CSR7 NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE THE KEY USED IS A FIXED KEY WHICH IS NOT SERIAL NUMBER DEPENDANT THE USER MUST CHOOSE A KEY AND CHANGE THE CODE HERE TO REFLECT THAT KEY DECRYPT MOVLW0EFH LOAD FIXED 64 BIT KEY LSB MOVWFKEY0 MOVLW0CDH MOVWFKEY1 MOVLW0ABH MOVWFKEY2 MOVLW089H MOVWFKEY3 MOVLW067H MOVWFKEY4 MOVLW045H MOVWFKEY5 MOVLW023H MOVWFKEY6 MOVLW01H LOAD FIXED 64 BIT KEY MSB MOVWFKEY7 MOVLW 11 1 OUTER LOOP 11 1 TIMES MOVWF CNT1 OUTER LOOP 11 1 TIMES DECRYPT OUTER MOVLW 48 INNER LOOP 48 TIMES MOVWF CNT0 INNER LOOP 48 TIMES DECRYPT INNER CLRWDT RESET WATCHDOG TIMER MOVFW CNT1 LAST 48 LOOPS RESTORE THE KEY XORLW 1 LAST 48 LOOPS RESTORE THE KEY SKPNZ LAST 48 LOOPS RESTORE THE KEY GOTO ROTATE KEY LAST 48 LOOPS RESTORE THE KEY THE LOOKUP TABLE IS COMPRESSED INTO IN 4 BYTES TO SAVE SPACE USE THE 3 LOW INDEX BITS TO MAKE UP AN 8 BIT BIT MASK USE THE 2 HIGH INDEX BITS TO LOOK UP THE VALUE IN THE TABLE USE THE BIT MASK TO ISOLATE THE CORRECT BIT IN THE BYTE PART OF THE REASON FOR THIS SCHEME IS BECAUSE NORMAL TABLE LOOKUP REQUIRES AN ADDITIONAL STACK LEVEL CLRC CLEAR CARRY FOR THE LEFT SHIFT MOVLW 1 INITIALISE MASK 1 BTFSC HOP3 3 SHIFT MASK 4X IF BIT 2 SET MOVLW 10000B SHIFT MASK 4X IF BIT 2 SET MOVWF MASK INITIALISE MASK 1 BTFSS HOP2 0 SHIFT MASK ANOTHER 2X IF BIT 1 SET GOTO 3 RLF MASK F RLF MASK F BTFSC HOP1 0 SHIFT MASK ANOTHER 1X IF BIT 0 SET RLF MASK F MASK HAS NOW BEEN SHIFTED 0 7 TIMES ACCORDING TO BITS 2 1 0 MOVLW 0 TABLE INDEX 0 BTFSC HOP4 1 IORLW 2 IF BIT 3 SET ADD 2 TO THE TABLE INDEX BTFSC HOP4 6 IORLW 4 IF BIT 4 SET ADD 4 TO THE TABLE INDEX ADDWF PC F ADD THE INDEX TO THE PROGRAM COUNTER MUST BE IN LOWER HALF OF PAGE TABLE MOVLW 02EH BITS 4 3 WERE 00 GOTO TABLE END END OF LOOKUP MOVLW 074H BITS 4 3 WERE 01 GOTO TABLE END END OF LOOKUP MOVLW 05CH BITS 4 3 WERE 10 GOTO TABLE END END OF LOOKUP MOVLW 03AH BITS 4 3 WERE 11 TABLE END ANDWF MASK F ISOLATE THE CORRECT BIT BY ANDING WITH MASK MOVLW 0 COPY THE BIT TO BIT 7 SKPZ COPY THE BIT TO BIT 7 MOVLW 10000000B COPY THE BIT TO BIT 7 XORWF HOP2 W ONLY INTERESTED IN BIT HOP2 7 XORWF HOP4 W ONLY INTERESTED IN BIT HOP4 7 XORWF KEY1 W ONLY INTERESTED IN BIT KEYREG1 7 MOVWF MASK STORE W TEMPORARILY WE NEED BIT 7 RLF MASK F LEFT ROTATE MASK TO GET BIT 7 INTO THE CARRY RLF HOP1 F SHIFT IN THE NEW BIT RLF HOP2 F RLF HOP3 F RLF HOP4 F ROTATE KEY CLRC CLEAR CARRY BTFSC KEY7 7 SET CARRY IF LEFTMOST BIT SET SETC SET CARRY IF LEFTMOST BIT SET RLF KEY0 F LEFT ROTATE THE 64 BIT KEY RLF KEY1 F RLF KEY2 F RLF KEY3 F RLF KEY4 F RLF KEY5 F RLF KEY6 F RLF KEY7 F DECFSZ CNT0 F INNER LOOP 48 TIMES GOTO DECRYPT INNER INNER LOOP 48 TIMES DECFSZ CNT1 F OUTER LOOP 12 TIMES 11 1 TO RESTORE KEY GOTO DECRYPT OUTER OUTER LOOP 12 TIMES 11 1 TO RESTORE KEY RETLW 0 RETURN FUNCTION LOAD CNT VALS DESCRIPTION LOAD COUNTERS INTO WRITE BUFFERS NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE LOAD CNT VALS MOVFWCNTR HI LOAD MSB OF COUNTER MOVWFTMP1 MOVFWCNTR LW LOAD LSB OF COUNTER MOVWFTMP2 RETLW 0 FUNCTION RECEIVE DESCRIPTION RECEPTION ROUTINE FOR PWM TRANSMISSIONS NOTE THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE RECEIVE WAIT FOR HEADER AND CALIBRATE BTFSS PORTA RFIN INPUT LOW GOTO RMT 0 YES RECEIVE ERROR MOVLW 10 10 ms TIMER MOVWF CNT1 RCV0 MOVLW 200 MOVWF CNT0 RCV1 BTFSS PORTA RFIN 2 INPUT HIGH GOTO RCV2 0 NO JUMP OUT OF LOOP DECFSZ CNT0 1 1 YES CONTINUE WITH TIMING LOOP GOTO RCV1 2 5 us X CNT0 DECFSZ CNT1 1 0 DO 1 ms LOOP CNT1 TIMES GOTO RCV0 0 RCV2 CLRF CNT0 1 CLEAR CALIB COUNTER LOW BYTE CLRF CNT1 1 CLEAR CALIB COUNTER HIGH BYTE 2 5 IS AVERAGE FOR DETECTING FALLING EDGE IN RCV1 2 INSTRUCTIONS FOR JUMP OUT RCV1 TO RCV2 2 INSTRUCTIONS FOR RCV2 CLEAR CALIBRATION COUNTER TOTAL 6 5 INSTRUCTIONS 3 DL1 LOOPS TO COMPENSATE FOR DL1 CLRWDT 1 RESET WATCHDOG TIMER DECFSZ CNT2 1 1 2 IF SKIP GOTO DL1 2 CNT0 X 4 us SAMPLE1 BTFSS PORTA RFIN 2 INPUT HIGH FIRST SAMPLE GOTO RMT01 0 NO ERROR MOVF CNT0 W 1 CALIBRATION COUNTER MOVWF CNT2 1 NOMINALLY 75 FOR 300 us PULSE DECF CNT2 1 1 SUBTRACT 2 FROM FINAL CALIB COUNTER TO COMPENATE FOR THIS GOTO 1 2 NOP 1 TOTAL 8 1 LOOP COUNTER DL2 CLRWDT 1 RESET WATCHDOG TIMER GOTO 1 2 WASTE TIME GOTO 1 2 WASTE TIME DECFSZ CNT2 1 1 GOTO DL2 2 CNT0 X 8 us CNT0 x Te SAMPLE2 BCF FLAGS BITIN 1 CLEAR BIT POSITION BTFSS PORTA RFIN 1 5 LEAVE 0 IF LINE HIGH BSF FLAGS BITIN 0 5 MAKE 1 IF LINE LOW SUB TOTAL 3 CYCLES CALL ROT SHIFT 11 2 CSR SHIFT CALL BCFCSR7 7 1 BTFSC FLAGS BITIN 1 5 BSF CSR7 7 0 5 SUB TOTAL 16 CYCLES MOVF CNT0 W 1 CALIBRATION COUNTER MOVWF CNT2 1 NOMINALLY 75 FOR 300 us PULSE MOVLW3 1 SEE CALCULATION BELOW SUBWF CNT2 1 1 NOP 1 SUB TOTAL 5 CYCLE TOTAL 24 24 8 3 LOOP COUNTERS TOTAL 24 INSTRUCTIONS SUBTRACT 24 8 3 TO COMPESATE FOR UPDATEING CSR AND OTHER PROCESSING AFTER DATA SAMPLE IS TAKEN DL3 GOTO 1 2 WASTE TIME GOTO 1 2 WASTE TIME CLRWDT 1 RESET WATCHDOG TIMER DECFSZ CNT2 1 1 GOTO DL3 2 CNT0 X 8 us CNT0 X Te SAMPLE3 BTFSC PORTA RFIN 2 INPUT LOW THIRD SAMPLE GOTO RMT0 0 NO RECEIVE ERROR CALL TST RTCC 11 CHECK RTCC DECFSZ CNT1 1 1 LAST BIT GOTO RCV8 2 NO GET NEXT BIT GOTORMT1 TOTAL 14 CYCLES RMT 0 RMT0 RMT01BSF STATUS C INVALID TRANSMISSION RETLW 1 RETURN RMT1BSF PORTA LED VALID TRANSMISSION FORMAT LED ON MOVLW0FH FORCE OPEN BUTTON CODES TO ZERO ANDWF SER 0 1 CLRC VALID SERIAL NUMBER VALID TX RETLW 0 RETURN FUNCTION M LOOP DESCRIPTION MAIN PROGRAM ROUTINE M LOOPBCFPORTA LED BTFSSPORTA LRN GOTOLEARN TEST UPDATE TIMER CALLTST TIMER HANDLE TIMER UPDATE OUTPUTS CALLRECEIVE RECEIVE TRANSMISSION BC M LOOP CHECK IF TRANSMISSION VALID M SEARCH CLRFTXNUM TEST FIRST POSITION COMPARE LOWER WORD OF SERIAL NUMBER M SERIAL CALLTX LOOKUP GET TX BASE ADDRESS BSF ADDRESS 1 ADD 2 TO BASE ADDRESS CALLEEREAD READ LOWER 16 BITS OF SER FROM EEPROM MOVFWTMP1 COMPARE RX AND EEPROM VALUES XORWF SER 2 W BNZM NEXT IF NOT EQUAL CHECK NEXT MOVFWTMP2 COMPARE RX AND EEPROM VALUES XORWF SER 3 W BNZM NEXT IF NOT EQUAL CHECK NEXT COMPARE UPPER WORD OF SERIAL NUMBER M SERIAL2 INCFADDRESS F POINT TO NEXT ENTRY CALLEEREAD READ UPPER 16 BITS OF SER FROM EEPROM MOVFWTMP1 COMPARE RX AND EEPROM VALUES XORWF SER 0 W BNZM NEXT IF NOT EQUAL CHECK NEXT MOVFWTMP2 COMPARE RX AND EEPROM VALUES XORWF SER 1 W BNZM NEXT IF NOT EQUAL CHECK NEXT BTFSSFLAGS LRNF LEARN MODE GOTOM HOP FOUND TRANSMITTER DECRYPT BSF FLAGS RELEARN SET RELEARN FLAG GOTOLEARN F FOUND TRANSMITTER LEARN SEARCH NEXT POSITION FOR SERIAL NUMBER M NEXTINCFTXNUM F POINT TO NEXT TRANSMITTER POSITION MOVLWMAX USERS TEST FOR LAST POSITION SUBWF TXNUM W BTFSSSTATUS C NOT FOUND IN MAP GOTOM SERIAL TRY NEXT POSITION M NF BTFSSFLAGS LRNF LEARN MODE GOTOM LOOP NO INVALID SERIAL NUMBER GOTOLEARN NF NEW TRANSMITTER USE POINTER FOR LEARN DECRYPT HOPCODE M HOP CALLDECRYPT DECRYPT HOPCODE TEST DICRIMINATION VALUE M DISMOVFWSER 3 SERIAL NUBER LSB MUST BE EQUAL XORWF DISC W TO DISCRIMINATION VALUE BNZM LOOP CHECK COUNTERS VALID BCFFLAGS SEC CNT CHECK FIRST COUNTER M CNT CALLTX LOOKUP POINT LOWER 16 BIT COUNTER BTFSCFLAGS SEC CNT IF SECOND COUNTER IS USED INCFADDRESS F INCREMENT ADDRESS CALLEEREAD READ LOWER 16 BIT COUNTER FROM EEPROM CHECK COUNTER WINDOWS M SUB MOVFWTMP2 16 BIT COUNTER SUBSTRACTION SUBWF CNTR LW W MOVWFTMP2 SKPC SKIP IF NO BORROW INCFTMP1 F ELSE INCR HI BYTE MOVFWTMP1 SUBWF CNTR HI W MOVWFTMP1 BCFTMP1 0 MAKE ACCEPTED WINDOW 512 M CHECK0 MOVFWTMP1 TEST IF IN WINDOW UPPER BYTE BTFSCSTATUS Z GOTOM CHECK2 GO AND CHECK LOWER BYTE BTFSCFLAGS SEC CNT IF SECOND COUNTER GOTOM LOOP ERROR GOTO MAIN LOOP BSF FLAGS SEC CNT SET FLAG FOR SECOND COUNTER CHECK GOTOM CNT AND CHECK IT M CHECK2 MOVFWTMP2 CHECK LOWER BYTE BZ M TZERO IF REPEAT RESET TIMEOUT COUNTER UPDATE EEPROM COUNTER M UPDATE CALLTX LOOKUP GET CURRENT TX BASE ADDRESS CALLLOAD CNT VALS LOAD COUNTER VALUES CALLEEWRITE UPDATE FIRST COUNTER CALLLOAD CNT VALS LOAD COUNTER VALUES CALLEEWRITE UPDATE SECOND COUNTER UPDATE OUTPUT WITH CURRENT BUTTON CODE M OUTPUT MOVLW0F0H MASK ONLY BUTTON CODES ANDWF FUNC 1 SWAPF FUNC 1 GET BUTTON CODE FROM FUNC BYTE BTFSCFUNC 0 CHANGE BUTTON TO S OUTPUT FORMAT BSF FUNC 4 S2 S1 S0 S3 CLRC RRFFUNC W M OUTPUT1 MOVWFPORTB UPDATE PORT WITH FUNCTION CODE M TZERO CLRF CNT HI RESET RTCC CLOCK CLRFCNT LW M END GOTOM LOOP WAIT FOR NEXT TRANMISSION FUNCTION LEARN DESCRIPTION LEARN ROUTINE LEARN CLRFCNT LW RESET TIMER CLRFCNT HI LEARN1BSF PORTA LED LED ON CALLTST RTCC UPDATE TIMER BTFSCPORTA LRN TEST FOR BUTTON RELEASE GOTOLEARN2 ENTER LEARN MODE BTFSSCNT HI 0 TEST FOR ERASE ALL GOTOLEARN1 LOOP BACK EEPROM ERASE ALL BCFPORTA LED ERASE ALL CLRWDT CLEAR WATCHDOG TIMER BTFSSPORTA LRN WAIT FOR BUTTON RELEASE GOTOERASE ALL LOOP BACK MOVLW30H ERASE ENABLE COMMAND MOVWF OUTBYT CALL SENDC SEND COMMAND TO EEPROM MOVLW20H ERASE ALL COMMAND MOVWF OUTBYT CALL SENDC SEND COMMAND TO EEPROM CALLWAITACK WAIT FOR ERASE ACK GOTORESET START OVER LEARN2 BCFPORTA LED CLEAR LED BSF FLAGS LRNF SET LEARN FLAG LEARN3 CALLTST RTCC UPDATE TIMER CALLT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论