📄 p676_koq.lst
字号:
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 + -