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

📄 hcs635.lst

📁 source for the microchip transponder for LF 125KHz.
💻 LST
📖 第 1 页 / 共 5 页
字号:


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00B5   0807           00713         MOVFW   PORTC           ; READ PORTA
00B6   3A20           00714         XORLW   020H            ; TOGGLE RF DATA OUT BIT
00B7   0087           00715         MOVWF   PORTC           ; OUTPUT NEW BIT
00B8   156D           00716         BSF     COMP,2
00B9   2034           00717         CALL    TE_DEL03        ; DO TE DELAY TIME
00BA   0C07           00718         RRF     PORTC,W         ; GET OUTPUT LEVEL INTO BIT 0
                      00719 ENDIF
00BB   066C           00720         XORWF   CSR6,W          ; COMPARE TO THE TRANSMIT BIT
00BC   3901           00721         ANDLW   1               ; GET RID OF THE OTHER BITS
00BD   1D03           00722         BTFSS   STATUS,Z        ; IF THE LEVEL IS OPPOSITE
00BE   2033           00723         CALL    TE_DELAY        ; ... THEN DO ANOTHER TE DELAY
00BF   28CD           00724         GOTO    TX_ROTATE       ; IF NOT TOTALLY CONFUSED YET THEN ASK FOR A RAISE
                      00725 
00C0                  00726 TX_PWM
00C0   28C1           00727         GOTO    $+1
00C1                  00728 TX_PWM1
00C1   1687           00729         BSF     RFOUT   ; SET RF OUTPUT HIGH
00C2   2032           00730         CALL    TE_DELAYL       ; DO 1 TE DELAY
00C3   0000           00731         NOP                     ; VERY CRITICAL TIME DELAYS TO MAKE ACCURATE PULSES
00C4   186C           00732         BTFSC   CSR6,0          ; IF TRANSMITTING A ONE
00C5   1287           00733         BCF     RFOUT   ; ... THEN SET MIDDLE TE OF PWM LOW
00C6                  00734 TX_PWM2
00C6   28C7           00735         GOTO    $+1
00C7   2032           00736         CALL    TE_DELAYL       ; DO 1 TE DELAY
00C8                  00737 TX_PWM3
00C8   1287           00738         BCF     RFOUT   ; SET LAST TE OF PWM LOW
00C9   3003           00739         MOVLW   3
00CA   00ED           00740         MOVWF   COMP
00CB   2034           00741         CALL    TE_DEL03        ; DO 1 TE DELAY
00CC   0000           00742         NOP
00CD                  00743 TX_ROTATE
00CD   0000           00744         NOP
00CE   0CEC           00745         RRF     CSR6,F          ; ROTATE NEXT BIT INTO POSITION
00CF   03DE           00746         DECF    CNT1,F          ; FIX FOR DOUBLED COUNT SIZE
00D0   0BDE           00747         DECFSZ  CNT1,F          ; ALL BITS TRANSMITTED? SET CLEAR PWM FLAG
00D1   288F           00748         GOTO    TX_BITL         ; ... NO, THEN DO NEXT BIT
00D2   3400           00749         RETLW   0
                      00750 
                      00751 ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                      00752 ;
                      00753 ; FUNCTION      : VLOW_LEVEL ()                         
                      00754 ;
                      00755 ; DESCRIPTION   : PICK THE VLOW LEVEL TO TEST BASED ON VTRIP FLAG AND LATCH
                      00756 ;
                      00757 ; PAGE          : 1
                      00758 ;
                      00759 ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
00D3                  00760 VLOW_LEVEL
00D3   3007           00761         MOVLW   EE_VLOWL        ; POINT VLOW LATCH
00D4   2213           00762         CALL    EEREAD0         ; READ BYTE FROM EEPROM
00D5   1683           00763         bsf     STATUS,RP0
00D6   0A1A           00764         INCF    EEDATA,W        ; SET Z FLAG IF VLOW LATCH SET @ 0FFH
00D7   1283           00765         bcf     STATUS,RP0      ; SELECT RAM BANK #0
MPASM  5.16                        HCS635.ASM   4-16-2008  14:39:21         PAGE 17


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00D8   3008           00766         movlw   HIGH $+8
00D9   008A           00767         movwf   PCLATH
00DA   3002           00768         MOVLW   2H              ; PRELOAD OFFSET FOR LATCHED 3V LEVEL
00DB   1A61           00769         BTFSC   VTRIP           ; IF VTRIP OPTION IS SET
00DC   3003           00770         MOVLW   3H              ; ... THEN USE THE OFFSET FOR LATCHED 5V LEVEL
00DD   19E1           00771         BTFSC   VLOWL           ; IF VLOW VALUE SHOULD NOT BE LATCHED
00DE   1D03           00772         BTFSS   STATUS,Z        ; . OR IT WAS NOT YET LATCHED
00DF   3901           00773         ANDLW   1H              ; ... THEN USE LOWER TEST LEVELS
00E0   0782           00774         ADDWF   PCL,F           ; ADD TO PROGRAM COUNTER
00E1   3411           00775         RETLW   11H             ; LOW VOLTAGE LEVEL = 2.0V
00E2   3414           00776         RETLW   14H             ; LOW VOLTAGE LEVEL = 2.3V
00E3   3415           00777         RETLW   15H             ; LOW VOLTAGE LEVEL = 4.0V
00E4   3417           00778         RETLW   17H             ; LOW VOLTAGE LEVEL = 4.5V
                      00779 
                      00780 ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                      00781 ;
                      00782 ; FUNCTION      : TRANSMIT ()                           
                      00783 ;
                      00784 ; DESCRIPTION   : SEND TRANSMISSION OUT ON RFOUT PIN
                      00785 ;
                      00786 ; PAGE          : 0
                      00787 ;
                      00788 ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
00E5                  00789 TRANSMIT:
00E5   01E5           00790         CLRF    CRC             ; CLEAR CRC HERE BECAUSE IT WAS A TIME WASTING NOP ANYWAY
00E6   1AD9           00791         BTFSC   STRTSEL         ; IF MANCHESTER/PPM START BIT REQUIRED
00E7   1465           00792         BSF     CRC,0           ; ... THEN BIAS CRC FOR START BIT
                      00793 
00E8   1358           00794         BCF     FLAGS,TEMPBIT   ; RESET LED STATE FLAG
00E9   1C07           00795         BTFSS   LED             ; IF LED WAS SWITCHED ON
00EA   1758           00796         BSF     FLAGS,TEMPBIT   ; ... YES, THEN SET LED FLAG
00EB   1407           00797         BSF     LED             ; ALWAYS SWITCH LED OFF
                      00798                 
00EC   0AE9           00799         INCF    CLK_LED,F       ; PREVENT NEXT LED TRANSITION TIME
                      00800         
00ED   1505           00801         BSF     RFEN            ; TURN ON RFEN FOR IN CASE WE ARE IN FSK MODE
                      00802 
00EE   1CE1           00803         BTFSS   WSEL1           ; IF EITHER OF THE WAKEUP SELECT
00EF   1861           00804         BTFSC   WSEL0           ; . BITS ARE SET FOR LONG WAKEUP
00F0   28F2           00805         GOTO    $+2             ; ... THEN SKIP PREAMBLE ADJUSTMENT
00F1   1658           00806         BSF     FLAGS,FIRST     ; ... ELSE FORCE AS IF FIRST PREAMBLE SENT
                      00807 
                      00808 ; ***** SET NUMBER OF PREAMBLE PULSES AND VLOW THRESHOLD ***********
                      00809 
00F2   300F           00810         MOVLW   D'15'           ; LOAD THE NUMBER OF 16 PREAMBLE BITS - 1 = 15
00F3   1E58           00811         BTFSS   FLAGS,FIRST     ; IF FIRST LONG PREAMBLE NOT YET SENT
00F4   3001           00812         MOVLW   D'1'            ; ... THEN DO NOT DO EXTRA PULSES AFTER TIMEOUT
00F5   00DE           00813         MOVWF   CNT1            ; STORE NUMBER OF PULSES TO TRANSMIT
                      00814 
00F6   1A58           00815         BTFSC   FLAGS,FIRST     ; IF FIRST PREAMBLE ALREADY SENT
00F7   10E1           00816         BCF     WSEL1           ; ... THEN USE NORMAL 50% DUTY CYLCE PULSES
                      00817 
00F8   3000           00818         MOVLW   0               ; FOR 100MS PREAMBLE DO NOT USE OFFSET
MPASM  5.16                        HCS635.ASM   4-16-2008  14:39:21         PAGE 18


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00F9   1CE1           00819         BTFSS   WSEL1           ; IF 75MS WAKEUP PREAMBLE SELECTED
00FA   300C           00820         MOVLW   D'12'           ; ... GET CONSTANT FOR 24.6MS OFFSET
00FB   1C61           00821         BTFSS   WSEL0           ; IF 50MS WAKEUP PREAMBLE SELECTED
00FC   3018           00822         MOVLW   D'24'           ; ... GET CONSTANT FOR 50MS OFFSET
                      00823 
00FD   1E58           00824         BTFSS   FLAGS,FIRST     ; IF NOT FIRST WAKEUP PREAMBLE
00FE   078F           00825         ADDWF   TMR1H,F         ; ... THEN ADD OFFSET TO CLOCK AND TEST WHEN 100MS REACHED
00FF   01ED           00826         CLRF    COMP            ; INITIALIZE COMPENSATION
0100   156D           00827         BSF     COMP,2          ; OVERHEAD COMPENSATION FOR LOOKING UP VLOW TRIP POINT
0101   2070           00828         CALL    TST_CLK         ; UPDATE 50MS CLOCK
0102   205A           00829         CALL    TST_LED         ; CHANGE LED PIN IF REQUIRED, RETURNS BAUD RATE AND C=0
0103   1687           00830         BSF     RFOUT           ; SET RF OUTPUT HIGH
0104   2035           00831         CALL    TE_DEL05        ; DO 1 TE DELAY
0105   20D3           00832         CALL    VLOW_LEVEL      ; GET VLOW LEVEL FROM LOOKUP TABLE
                      00833 
                      00834 ; ***** TEST VLOW AFTER WAITING AT LEAST 10 INSTRUCTION CYCLES ***********
                      00835 
0106   1683           00836         bsf     STATUS,RP0      ; select Bank 1
                      00837 ;       MOVWF   LVDCON          ; (1) LOAD LOW VOLTAGE DETECT REGISTER
                      00838 ;       MOVWF   VLOWLEVEL       ; (6) STORE VALUE FOR COMPARISON
                      00839 ;       btfss   LVDCON,IRVST
                      00840 ;       goto    $-1
0107   1283           00841         bcf     STATUS,RP0
                      00842 ;       BSF     FLAGS,VLOWBAT   ; (11) FORCE VLOWBAT FLAG ON => ENSURE THAT LED DOESN'T SWITCH ON
                      00843 ;       XORWF   VLOWLEVEL,F     ; CHECK IF BATTERY LEVEL CHANGED
                      00844 ;       RLF     VLOWLEVEL,F     ; SET CARRY FLAG IF LEVEL CHANGED
                      00845 ;       MOVWF   VLOWLEVEL       ; STORE VLOW LEVEL
                      00846 ;       BTFSS   VLOW            ; IF VLOW NOT SET
0108   1058           00847         BCF     FLAGS,VLOWBAT   ; ... THEN THE BATTERY IS OK, FLAG WAS SET EARLIER
0109   1283           00848         bcf     STATUS,RP0      ; SELECT RAM BANK #0
                      00849 
010A   1803           00850         BTFSC   STATUS,C        ; IF BATTERY LEVEL UNCHANGED
010B   1DE1           00851         BTFSS   VLOWL           ; . OR VLOW LATCH DISABLED
010C   2916           00852         GOTO    TX_PRE1         ; ... THEN SKIP VLOW LATCH UPDATE
                      00853 
                      00854 ; ***** UPDATE VLOW LATCH IN EEPROM ******************
                      00855 
010D   1287           00856         BCF     RFOUT           ; STOP TRANSMITTER DURING EEWRITE
010E   1683           00857         bsf     STATUS,RP0      ; SELECT RAM BANK #1
010F   3007           00858         MOVLW   EE_VLOWL        ; GET OFFSET TO VLOW LATCH IN EEPROM
0110   009B           00859         MOVWF   EEADR           ; SET EEPROM ADDRESS TO VLOW LATCH
                      00860 
0111   30FF           00861         MOVLW   0FFH            ; VALUE TO SET LATCH CHOOSEN TO BE SAME AS FAILED WRITE
0112   1C58           00862         BTFSS   FLAGS,VLOWBAT   ; IF NOT LOW BATTERY CONDITION  
0113   3000           00863         MOVLW   00H             ; ... THEN CLEAR EEPROM LATCH
0114   2222           00864         CALL    EEWRITE         ; UPDATE EEPROM LATCH
0115   1283           00865         bcf     STATUS,RP0      ; SELECT RAM BANK #0
                      00866 
                      00867 ; ***** SEND TRANSMISSION'S PREAMBLE BITS ******************
                      00868 
                      00869 
0116                  00870 TX_PRE1
0116   03E9           00871         DECF    CLK_LED,F       ; PERMIT NEXT LED TRANSITION TIME
MPASM  5.16                        HCS635.ASM   4-16-2008  14:39:21         PAGE 19


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0117   1B58           00872         BTFSC   FLAGS,TEMPBIT   ; IF THE LED WAS ON BEFORE THE VLOW CHECK
0118   1007           00873         BCF     LED             ; ... THEN SWITCH LED ON
0119                  00874 TX_PRE2
0119   1287           00875         BCF     RFOUT           ; CLEAR RF OUTPUT LOW
011A   00EE           00876         MOVWF   CNT3            ; LOAD LOOP COUNTER BUT NOT ON FIRST ITERATION
011B   291C           00877         GOTO    $+1
                      00878         
011C   1CE1           00879         BTFSS   WSEL1           ; IF 50% DUTY CYCLE
011D   1061           00880         BCF     WSEL0           ; ... THEN MAKE SURE WE DO NOT DO 16.7% DUTY CYCLE
                      00881 
011E   156D           00882         BSF     COMP,2          ; OVERHEAD COMPENSATION FOR LOOKING UP VLOW TRIP POINT
011F   2033           00883         CALL    TE_DELAY        ; DO 1 TE DELAY
0120   1B59           00884         BTFSC   LEDL            ; IF SINGLE LED BLINK ON VLOW IS ENABLED
0121   1007           00885         BCF     LED     ; ... YES, THEN SWITCH LED ON
0122   1359           00886         BCF     LEDL            ; MARK THAT THE FIRST LED BLINK OCCURRED
0123   18E1           00887         BTFSC   WSEL1           ; IF 33.3% DUTY CYCLE
0124   2033           00888         CALL    TE_DELAY        ; ... THEN WAIT ANOTHER TE
0125   1861           00889         BTFSC   WSEL0           ; IF 16.6% DUTY CYCLE
0126   2033           00890   

⌨️ 快捷键说明

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