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

📄 pic16f684carbo.asm

📁 This program is Automobile CNG Conversion Electronic Change over switch source `code
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; original File = C:\switchecu\pic16f684carbo.hex

    processor 16F684
    #include <P16F684.INC>
    __config 0x330C
;   _FCMEN_OFF & _IESO_OFF & _BOD_ON & _CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_ON 
;   & _INTOSCIO 
;   __idlocs 0xFF, 0xFF, 0xFF, 0xFF

;   EEPROM-Data
    Org 0x2100
    DE 0xFF, 0xFF, 0xF0, 0x01, 0x88, 0x13, 0x0C, 0x02
    DE 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0x0F, 0x00, 0xC8, 0x8D, 0x5E, 0x28, 0x09, 0xFF
    DE 0x13, 0x24, 0x38, 0x45, 0x1E, 0xFF, 0x11, 0x2B
    DE 0x49, 0x60, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00
    DE 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF

; RAM-Variable
LRAM_0x20 equ 0x20
LRAM_0x21 equ 0x21
LRAM_0x22 equ 0x22
LRAM_0x23 equ 0x23
LRAM_0x24 equ 0x24
LRAM_0x25 equ 0x25
LRAM_0x26 equ 0x26
LRAM_0x27 equ 0x27
LRAM_0x28 equ 0x28
LRAM_0x29 equ 0x29
LRAM_0x2A equ 0x2A
LRAM_0x2B equ 0x2B
LRAM_0x2C equ 0x2C
LRAM_0x2D equ 0x2D
LRAM_0x2E equ 0x2E
LRAM_0x2F equ 0x2F
LRAM_0x30 equ 0x30
LRAM_0x31 equ 0x31
LRAM_0x32 equ 0x32
LRAM_0x33 equ 0x33
LRAM_0x34 equ 0x34
LRAM_0x37 equ 0x37
LRAM_0x38 equ 0x38
LRAM_0x3D equ 0x3D
LRAM_0x3F equ 0x3F
LRAM_0x42 equ 0x42
LRAM_0x43 equ 0x43
LRAM_0x44 equ 0x44
LRAM_0x45 equ 0x45
LRAM_0x46 equ 0x46
LRAM_0x47 equ 0x47
LRAM_0x48 equ 0x48
LRAM_0x49 equ 0x49
LRAM_0x4A equ 0x4A
LRAM_0x4B equ 0x4B
LRAM_0x4C equ 0x4C
LRAM_0x4D equ 0x4D
LRAM_0x4E equ 0x4E
LRAM_0x4F equ 0x4F
LRAM_0x50 equ 0x50
LRAM_0x51 equ 0x51
LRAM_0x52 equ 0x52
LRAM_0x53 equ 0x53
LRAM_0x54 equ 0x54
LRAM_0x55 equ 0x55
LRAM_0x56 equ 0x56
LRAM_0x57 equ 0x57
LRAM_0x58 equ 0x58
LRAM_0x59 equ 0x59
LRAM_0x5A equ 0x5A
LRAM_0x5B equ 0x5B
LRAM_0x5C equ 0x5C
LRAM_0x5D equ 0x5D

; Program

    Org 0x0000

;   Reset-Vector
    NOP
    GOTO LADR_0x01EA
    ADDLW 0xFF
    ADDLW 0xFF
;   Interrupt-Vector
    MOVWF LRAM_0x20
    SWAPF STATUS,W
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BCF STATUS,RP1       ; !!Bank Register-Bank(2/3)-Select
    MOVWF LRAM_0x21
    MOVF PCLATH,W        ; !!Bank Program-Page-Select
    MOVWF LRAM_0x22
    CALL LADR_0x0031
    MOVF LRAM_0x22,W
    MOVWF PCLATH         ; !!Bank Program-Page-Select
    SWAPF LRAM_0x21,W
    MOVWF STATUS
    SWAPF LRAM_0x20,F
    SWAPF LRAM_0x20,W
    RETFIE
LADR_0x0013
    CLRF PCLATH          ; !!Bank Program-Page-Select
    ADDWF PCL,F
    RETLW 0x10
    RETLW 0x20
    RETLW 0x01
    RETLW 0x02
    RETLW 0x30
    RETLW 0x31
    RETLW 0x33
    RETLW 0x00
LADR_0x001D
    CLRF PCLATH          ; !!Bank Program-Page-Select
    ADDWF PCL,F
    RETLW 0x10
    RETLW 0x20
    RETLW 0x21
    RETLW 0x23
    RETLW 0x27
LADR_0x0024
    BTFSS LRAM_0x4D,1
    RETURN
    BCF INTCON,GIE
    MOVF LRAM_0x38,W
    MOVWF LRAM_0x24
    MOVF LRAM_0x37,W
    MOVWF LRAM_0x23
    BCF LRAM_0x4D,1
    BSF INTCON,GIE
    DECF LRAM_0x3F,F
    BTFSC STATUS,Z
    BSF LRAM_0x4D,2
    RETURN
LADR_0x0031
    BTFSS PIR1,5         ; !!Bank!! PIR1 - PIE1
    GOTO LADR_0x0035
    BCF PIR1,5           ; !!Bank!! PIR1 - PIE1
    GOTO LADR_0x003B
LADR_0x0035
    BTFSS PIR1,0         ; !!Bank!! PIR1 - PIE1
    RETURN
    BCF PIR1,0           ; !!Bank!! PIR1 - PIE1
    INCFSZ LRAM_0x3D,W
    MOVWF LRAM_0x3D
    RETURN
LADR_0x003B
    CLRF LRAM_0x3D
    BSF LRAM_0x4D,1
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BCF PIR1,5           ; !!Bank!! PIR1 - PIE1
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    GOTO LADR_0x0035
LADR_0x0041
    MOVLW 0x03
    MOVWF LRAM_0x3F
    MOVLW 0xFF
    MOVWF LRAM_0x33
    MOVWF LRAM_0x34
    RETURN
LADR_0x0047
    MOVF LRAM_0x3D,W
    SUBLW 0x04
    BTFSC STATUS,C
    RETURN
    CALL LADR_0x0041
    BTFSS LRAM_0x4D,2
    RETURN
    BCF LRAM_0x4D,2
    GOTO LADR_0x0367
LADR_0x0050
    BSF LRAM_0x4D,0
    MOVLW 0x06
    MOVWF LRAM_0x4B
    MOVWF LRAM_0x4C
    BSF PORTC,1          ; !!Bank!! PORTC - TRISC
    BCF PORTA,2          ; !!Bank!! PORTA - TRISA
    BSF LRAM_0x49,1
    BSF LRAM_0x4A,2
    MOVLW 0xFF
    MOVWF LRAM_0x47
    MOVLW 0xB7
    MOVWF LRAM_0x56
    MOVLW 0x00
    MOVWF LRAM_0x57
    RETURN
LADR_0x005F
    MOVF LRAM_0x57,W
    XORLW 0x14
    BTFSC STATUS,Z
    GOTO LADR_0x0075
    XORLW 0x14
    BTFSC STATUS,Z
    GOTO LADR_0x009A
    XORLW 0x01
    BTFSC STATUS,Z
    GOTO LADR_0x00A4
    XORLW 0x03
    BTFSC STATUS,Z
    GOTO LADR_0x0093
    XORLW 0x01
    BTFSC STATUS,Z
    GOTO LADR_0x009A
    XORLW 0x07
    BTFSC STATUS,Z
    GOTO LADR_0x00A4
    XORLW 0x0A
    BTFSC STATUS,Z
    GOTO LADR_0x0082
LADR_0x0075
    RETURN
    MOVF LRAM_0x34,W
    SUBWF LRAM_0x51,W
    BTFSS STATUS,Z
    GOTO LADR_0x007C
    MOVF LRAM_0x33,W
    SUBWF LRAM_0x50,W
LADR_0x007C
    BSF LRAM_0x4A,4
    BTFSS STATUS,C
    RETURN
    BCF LRAM_0x4A,4
    BSF PORTA,4          ; !!Bank!! PORTA - TRISA
    RETURN
LADR_0x0082
    MOVF LRAM_0x56,F
    BTFSS STATUS,Z
    GOTO LADR_0x008F
    BTFSS LRAM_0x5D,1
    GOTO LADR_0x008A
    BCF LRAM_0x5D,1
LADR_0x0088
    MOVLW 0x1F
    GOTO LADR_0x008E
LADR_0x008A
    MOVF LRAM_0x52,W
    BTFSC STATUS,Z
    GOTO LADR_0x0088
    BSF LRAM_0x5D,1
LADR_0x008E
    MOVWF LRAM_0x56
LADR_0x008F
    BCF PORTA,4          ; !!Bank!! PORTA - TRISA
    BTFSC LRAM_0x5D,1
    BSF PORTA,4          ; !!Bank!! PORTA - TRISA
    RETURN
LADR_0x0093
    BTFSS LRAM_0x4F,3
    GOTO LADR_0x00A4
    MOVLW 0x5C
    MOVWF LRAM_0x56
    MOVLW 0x03
    MOVWF LRAM_0x57
    RETURN
LADR_0x009A
    MOVF LRAM_0x56,F
    BTFSS STATUS,Z
    RETURN
    BCF PORTA,2          ; !!Bank!! PORTA - TRISA
    BSF LRAM_0x49,1
    BCF LRAM_0x4A,2
    MOVLW 0x5C
    MOVWF LRAM_0x56
    INCF LRAM_0x57,F
    RETURN
LADR_0x00A4
    MOVF LRAM_0x56,F
    BTFSS STATUS,Z
    RETURN
    GOTO LADR_0x013C
LADR_0x00A8
    MOVF LRAM_0x57,W
    XORLW 0x00
    BTFSC STATUS,Z
    GOTO LADR_0x013C
    XORLW 0x01
    BTFSC STATUS,Z
    GOTO LADR_0x00C2
    XORLW 0x03
    BTFSC STATUS,Z
    GOTO LADR_0x013C
    XORLW 0x01
    BTFSC STATUS,Z
    GOTO LADR_0x013C
    XORLW 0x07
    BTFSC STATUS,Z
    GOTO LADR_0x00C2
    XORLW 0x0E
    BTFSC STATUS,Z
    GOTO LADR_0x00DB
    XORLW 0x07
    BTFSC STATUS,Z
    GOTO LADR_0x00DB
    XORLW 0x03
    BTFSC STATUS,Z
    GOTO LADR_0x00F3
    RETURN
LADR_0x00C2
    MOVLW 0x3D
    MOVWF LRAM_0x47
    BCF PORTC,1          ; !!Bank!! PORTC - TRISC
    BCF LRAM_0x49,1
    BSF LRAM_0x4A,2
    MOVLW 0x0A
    MOVWF LRAM_0x57
    MOVLW 0x10
    CALL LADR_0x0370
    MOVWF LRAM_0x58
    MOVLW 0x11
    CALL LADR_0x0370
    MOVWF LRAM_0x59
    MOVF LRAM_0x54,W
LADR_0x00D0
    MOVWF LRAM_0x5C
    MOVWF LRAM_0x23
    INCF LRAM_0x23,F
    BSF STATUS,C
    CLRF LRAM_0x5A
    CLRF LRAM_0x5B
LADR_0x00D6
    RLF LRAM_0x5A,F
    RLF LRAM_0x5B,F
    DECFSZ LRAM_0x23,F
    GOTO LADR_0x00D6
    GOTO LADR_0x00EB
LADR_0x00DB
    BCF STATUS,C
LADR_0x00DC
    INCF LRAM_0x5C,F
    RLF LRAM_0x5A,F
    RLF LRAM_0x5B,F
    BTFSS STATUS,C
    GOTO LADR_0x00E3
    CLRF LRAM_0x5C
    RLF LRAM_0x5A,F
LADR_0x00E3
    MOVF LRAM_0x5A,W
    ANDWF LRAM_0x58,W
    BTFSS STATUS,Z
    GOTO LADR_0x00EB
    MOVF LRAM_0x5B,W
    ANDWF LRAM_0x59,W
    BTFSC STATUS,Z
    GOTO LADR_0x00DC
LADR_0x00EB
    MOVF LRAM_0x5C,W
    CALL LADR_0x0013
    MOVWF LRAM_0x23
    MOVLW 0xCC
    ANDWF PORTA,F        ; !!Bank!! PORTA - TRISA
    MOVF LRAM_0x23,W
    IORWF PORTA,F        ; !!Bank!! PORTA - TRISA
    RETURN
LADR_0x00F3
    MOVLW 0x03
    BTFSS LRAM_0x4F,7
    GOTO LADR_0x00FA
    ADDWF LRAM_0x52,W
    BTFSC STATUS,C
    MOVLW 0xFF
    GOTO LADR_0x00FD
LADR_0x00FA
    SUBWF LRAM_0x52,W
    BTFSS STATUS,C
    MOVLW 0x00
LADR_0x00FD
    MOVWF LRAM_0x52
    RETURN
LADR_0x00FF
    MOVF LRAM_0x57,W
    XORLW 0x0A
    BTFSC STATUS,Z
    GOTO LADR_0x010A
    XORLW 0x07
    BTFSC STATUS,Z
    GOTO LADR_0x0117
    XORLW 0x03
    BTFSC STATUS,Z
    GOTO LADR_0x0125
    RETURN
LADR_0x010A
    MOVF LRAM_0x5C,W
    MOVWF LRAM_0x54
    BCF PORTC,1          ; !!Bank!! PORTC - TRISC
    BSF PORTA,2          ; !!Bank!! PORTA - TRISA
    BCF LRAM_0x49,1
    BCF LRAM_0x4A,2
    MOVLW 0x0D
    MOVWF LRAM_0x57
    CLRF LRAM_0x59
    MOVLW 0x0C
    MOVWF LRAM_0x58
    MOVF LRAM_0x53,W
    GOTO LADR_0x00D0
LADR_0x0117
    MOVF LRAM_0x5C,W
    MOVWF LRAM_0x53
    BSF PORTC,1          ; !!Bank!! PORTC - TRISC
    BCF PORTA,2          ; !!Bank!! PORTA - TRISA
    BCF LRAM_0x49,1
    BCF LRAM_0x4A,2
    BSF LRAM_0x4F,0
    MOVLW 0x0E
    MOVWF LRAM_0x57
    BSF LRAM_0x5D,1
    CLRF LRAM_0x56
    MOVLW 0xCC
    ANDWF PORTA,F        ; !!Bank!! PORTA - TRISA
    RETURN
LADR_0x0125
    MOVF LRAM_0x52,W
    MOVWF LRAM_0x27
    MOVLW 0x06
    CALL LADR_0x0376
    CLRWDT
    MOVF LRAM_0x53,W
    MOVWF LRAM_0x27
    MOVLW 0x07
    CALL LADR_0x0376
    MOVF LRAM_0x54,W
    MOVWF LRAM_0x27
    MOVLW 0x08
    CALL LADR_0x0376
    MOVLW 0xCC
    ANDWF PORTA,F        ; !!Bank!! PORTA - TRISA
    BCF LRAM_0x4A,4
    BSF PORTC,1          ; !!Bank!! PORTC - TRISC
    BCF PORTA,2          ; !!Bank!! PORTA - TRISA
    BSF LRAM_0x49,1
    BSF LRAM_0x4A,2
    MOVLW 0x14
    MOVWF LRAM_0x57
    RETURN
LADR_0x013C
    BCF PORTC,1          ; !!Bank!! PORTC - TRISC
    BCF PORTA,2          ; !!Bank!! PORTA - TRISA
    BCF LRAM_0x49,1
    BCF LRAM_0x4A,2
    CLRF LRAM_0x4A
    CLRF LRAM_0x49
    BCF LRAM_0x4D,0
    RETURN
LADR_0x0144
    MOVLW 0x2E
    MOVWF FSR
    MOVF LRAM_0x54,W
    MOVWF LRAM_0x24
    MOVLW 0x12
    BTFSC STATUS,Z
    GOTO LADR_0x014E
LADR_0x014B
    ADDLW 0x06
    DECFSZ LRAM_0x24,F
    GOTO LADR_0x014B
LADR_0x014E
    MOVWF LRAM_0x23
    MOVLW 0x05
    MOVWF LRAM_0x24
LADR_0x0151
    MOVF LRAM_0x23,W
    CALL LADR_0x0370
    MOVWF INDF
    INCF FSR,F
    INCF LRAM_0x23,F
    DECFSZ LRAM_0x24,F
    GOTO LADR_0x0151
    MOVF LRAM_0x2F,W
    BTFSS STATUS,Z
    GOTO LADR_0x015F
    BSF LRAM_0x2C,2
    BTFSC LRAM_0x30,0
    BSF LRAM_0x2C,0
    GOTO LADR_0x0167
LADR_0x015F
    SUBWF LRAM_0x2E,W
    BTFSS STATUS,C
    GOTO LADR_0x0167
    BSF LRAM_0x2C,0
    COMF LRAM_0x2E,F
    COMF LRAM_0x2F,F
    COMF LRAM_0x30,F
    COMF LRAM_0x31,F
LADR_0x0167
    CLRF LRAM_0x2A
    CLRF LRAM_0x29
    CALL LADR_0x01B7
LADR_0x016A
    MOVLW 0x11
    CALL LADR_0x0257
    BTFSC LRAM_0x2C,0
    SUBLW 0xFF
    BTFSC LRAM_0x2C,1
    GOTO LADR_0x018C
    SUBWF LRAM_0x2A,W
    BTFSC STATUS,Z
    GOTO LADR_0x01AA
    BTFSS STATUS,C
    GOTO LADR_0x0181
    DECF LRAM_0x2A,F
    DECF LRAM_0x2D,F
    BTFSS LRAM_0x2D,7
    GOTO LADR_0x017F
    COMF LRAM_0x2D,W
    ADDLW 0x02
    SUBWF LRAM_0x32,W
    BTFSC LRAM_0x2C,3
    BTFSS STATUS,C
    GOTO LADR_0x018D
LADR_0x017F
    INCF LRAM_0x2A,F
    RETURN
LADR_0x0181
    INCF LRAM_0x2A,F
    INCF LRAM_0x2D,F
    BTFSC LRAM_0x2D,7
    GOTO LADR_0x018A
    MOVF LRAM_0x32,W
    SUBWF LRAM_0x2D,W
    BTFSC LRAM_0x2C,3
    BTFSC STATUS,C
    GOTO LADR_0x018D
LADR_0x018A
    DECF LRAM_0x2A,F
    RETURN
LADR_0x018C
    MOVWF LRAM_0x2A
LADR_0x018D
    CLRF LRAM_0x2D
    MOVLW 0x2E
    ADDWF LRAM_0x29,W
    MOVWF FSR
LADR_0x0191
    MOVLW 0x04
    BTFSC LRAM_0x2C,2
    MOVLW 0x01
    SUBWF LRAM_0x29,W
    BTFSC STATUS,C
    GOTO LADR_0x01A1
    MOVLW 0x03
    ADDWF INDF,W
    SUBWF LRAM_0x2A,W
    BTFSS STATUS,C
    GOTO LADR_0x01A1
    INCF LRAM_0x29,F
    INCF FSR,F
    GOTO LADR_0x0191
LADR_0x019F
    DECF LRAM_0x29,F
    DECF FSR,F
LADR_0x01A1

⌨️ 快捷键说明

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