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

📄 电机.asm

📁 CCP1模块使用的有关PIC应用程序Trabicom On Board Engine Controller
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;**********************************************************************
;*               Trabicom On Board Engine Controller                  *
;**********************************************************************
;*                                                                    *
;*   Filename:      Trabi.asm                                         *
;*   Date:          12.11.2000                                        *
;*   File Version:  Trabicom V2.1                                     *
;*                                                                    *
;*   Author:        Zoltan Fekete                                     *
;*   Company:       Siemens PSE                                       *
;*                                                                    * 
;*                                                                    *
;**********************************************************************
;*                                                                    *
;*   Notes:         Special hardware required.                        *
;*                  PIC 16f877 , XTAL : 20MHz                         *
;*                  Nintendo GameBoy on far end                       *
;*                                                                    *
;*   Pinout:        RA0/in - Temp cyl1 sensor                         *
;*                  RA1/in - Temp cyl2 sensor                         *
;*                  RA2/in - Temp air sensor                          *
;*                  RA3/in - Engine performance sensor                *
;*                  RA4                                               *
;*                  RA5                                               *
;*                                                                    *
;*                  RB0/in - \                                        *
;*                  RB1/in -  Safety switch (Zero active)             *
;*                  RB2/in -  4 bits wide                             *
;*                  RB3/in - /                                        *
;*                  RB4/in - Signal plugs                             *
;*                  RB5/in -                                          *
;*                  RB6/in - (Programmer)                             *
;*                  RB7/in - (Programmer)                             *
;*                                                                    *
;*                  RC0/ou - Plug signal for sparking                 *
;*                  RC1/ou - Speaker out                              *
;*                  RC2/ou - DA Bit0 \                                *
;*                  RC3/ou - DA Bit1  \                               *
;*                  RC4/ou - DA Bit2  / Water Injection               *
;*                  RC5/ou - DA Bit3 /                                *
;*                  RC6/ou - Inmobiliser (Relay)                      *
;*                  RC7                                               *
;*                                                                    *
;*                  RD0/ou - Bus data 0                               *
;*                  RD1/ou - Bus data 1                               *
;*                  RD2/ou - Bus data 2                               *
;*                  RD3/ou - Bus data 3                               *
;*                  RD4/ou - Bus data 4                               *
;*                  RD5/ou - Bus data 5                               *
;*                  RD6/ou - Bus data 6                               *
;*                  RD7/ou - Bus data 7                               *
;*                                                                    *
;*                  RE0/ou - RD                                       *
;*                  RE1/ou - WR                                       *
;*                  RE2/ou - CS                                       *
;*                                                                    *
;**********************************************************************


        list      p=16f877                 ; list directive to define processor
        #include <p16f877.inc>             ; processor specific variable definitions
  
  __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF 

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.



;**********************************************************************
;*              VARIABLE DEFINITIONS                                  *
;**********************************************************************

w_temp          EQU     0x20               ; variable used for context saving 
status_temp     EQU     0x21               ; variable used for context saving
TMPH            EQU     0x22               ; Timer 1 High byte
TMPL            EQU     0x23               ; Timer 1 Low byte
DATA_EE_ADDR    EQU     0x24               ; EEPROM address
DATA_EE_DATA    EQU     0x25               ; EEPROM data
RPMH            EQU     0x26               ; RPM HIGH BYTE
RPML            EQU     0x27               ; RPM LOW BYTE
RPM_OK          EQU     0x28               ; RPM X00
ADSTATE         EQU     0X29               ; A/D CONVERSION NUMBER
TCYL1H          EQU     0X2a               ; TEMP CYLINDER 1
TCYL1L          EQU     0X2b
TCYL2H          EQU     0X2c               ; TEMP CYLINDER 2
TCYL2L          EQU     0X2d
TAIRH           EQU     0X2e               ; TEMP AIR
TAIRL           EQU     0X2f
POWERH          EQU     0X30               ; POWER
POWERL          EQU     0X31

COUNTER         EQU     0X32               ; COUNTER SERVICE FILE
COUNTER1        EQU     0X33               ; COUNTER SERVICE FILE
COUNTER2        EQU     0X34               ; COUNTER2 SERVICE FILE

SPEAKER         EQU     1                  ; BIT POSITION
SPARK           EQU     00                 ; BIT POSITION FOR PLUG OUT

POWEREE         EQU     0X35               ; POWER FOR EEPROM (0-5 *15)
ANGLE           EQU     0x36               ; PLUG ANGLE

SAFETY          EQU     b'00001110'        ; SAFETY SWITCH (4 BIT WIDE)
RELAY           EQU     06                 ; RELAY ON BIT6
RPMIN           EQU     0X37               ; MINIMUM RPM SHADOW FILE

DATA_COMMAND    EQU     0X38
DATA_ADDR       EQU     0X39               ; DATA ADDRESS TEMP
DATA_DATA       EQU     0X3A               ; DATA DATA TEMP
DATA_CHKSM      EQU     0X3B               ; DATA CHECKSUM

WATINJ          EQU     0X3C               ; WATER INJ. '00 XXXX 00' !!!

AGAIN           EQU     B'10101010'        ; AGAIN SIGN FOR GAMEBOY
COM_WEE         EQU     0X0A               ; CODE FOR WRITE THE EEPROM
COM_REE         EQU     0XA0               ; CODE FOR READ THE EEPROM
COM_MEA         EQU     0XAA               ; CODE FOR READ THE MEASURES
COM_WSH         EQU     0X55               ; CODE FOR WRITE THE SHADOW
SHADOWSTART     EQU     0X0A0              ; SHADOW FILE START ADDRESS

;**********************************************************************
;*              EEPROM FIELD DATA                                     *
;**********************************************************************

                ORG     H'2100'
                ;       The plug time table contains for 15 RPM value
                ;       and 6 power, plug angel values (1 Byte)
                ;       INTIT ANGLE: 60
                                           ; power 1
                DE      0                  ; 300 RPM
                DE      2                  ; 500 RPM
                DE      0x56               ; 1000 RPM
                DE      0x97               ; 1500 RPM
                DE      0xB8               ; 2000 RPM
                DE      0xCB               ; 2500 RPM
                DE      0xD8               ; 3000 RPM
                DE      0xE2               ; 3500 RPM
                DE      0xE9               ; 4000 RPM
                DE      0xEE               ; 4500 RPM
                DE      0xF2               ; 5000 RPM
                DE      0xF6               ; 5500 RPM
                DE      0xF9               ; 6000 RPM
                DE      0xFB               ; 6500 RPM
                DE      0xFE               ; 7000 RPM

                                           ; power 2
                DE      0                  ; 300 RPM
                DE      2                  ; 500 RPM
                DE      0x56               ; 1000 RPM
                DE      0x97               ; 1500 RPM
                DE      0xB8               ; 2000 RPM
                DE      0xCB               ; 2500 RPM
                DE      0xD8               ; 3000 RPM
                DE      0xE2               ; 3500 RPM
                DE      0xE9               ; 4000 RPM
                DE      0xEE               ; 4500 RPM
                DE      0xF2               ; 5000 RPM
                DE      0xF6               ; 5500 RPM
                DE      0xF9               ; 6000 RPM
                DE      0xFB               ; 6500 RPM
                DE      0xFE               ; 7000 RPM

                                           ; power 3
                DE      0                  ; 300 RPM
                DE      2                  ; 500 RPM
                DE      0x56               ; 1000 RPM
                DE      0x97               ; 1500 RPM
                DE      0xB8               ; 2000 RPM
                DE      0xCB               ; 2500 RPM
                DE      0xD8               ; 3000 RPM
                DE      0xE2               ; 3500 RPM
                DE      0xE9               ; 4000 RPM
                DE      0xEE               ; 4500 RPM
                DE      0xF2               ; 5000 RPM
                DE      0xF6               ; 5500 RPM
                DE      0xF9               ; 6000 RPM
                DE      0xFB               ; 6500 RPM
                DE      0xFE               ; 7000 RPM

                                           ; power 4
                DE      0                  ; 300 RPM
                DE      2                  ; 500 RPM
                DE      0x56               ; 1000 RPM
                DE      0x97               ; 1500 RPM
                DE      0xB8               ; 2000 RPM
                DE      0xCB               ; 2500 RPM
                DE      0xD8               ; 3000 RPM
                DE      0xE2               ; 3500 RPM
                DE      0xE9               ; 4000 RPM
                DE      0xEE               ; 4500 RPM
                DE      0xF2               ; 5000 RPM
                DE      0xF6               ; 5500 RPM
                DE      0xF9               ; 6000 RPM
                DE      0xFB               ; 6500 RPM
                DE      0xFE               ; 7000 RPM

                                           ; power 5
                DE      0                  ; 300 RPM
                DE      2                  ; 500 RPM
                DE      0x56               ; 1000 RPM
                DE      0x97               ; 1500 RPM
                DE      0xB8               ; 2000 RPM
                DE      0xCB               ; 2500 RPM
                DE      0xD8               ; 3000 RPM
                DE      0xE2               ; 3500 RPM
                DE      0xE9               ; 4000 RPM
                DE      0xEE               ; 4500 RPM
                DE      0xF2               ; 5000 RPM
                DE      0xF6               ; 5500 RPM
                DE      0xF9               ; 6000 RPM
                DE      0xFB               ; 6500 RPM
                DE      0xFE               ; 7000 RPM

                                           ; power 6
                DE      0                  ; 300 RPM
                DE      2                  ; 500 RPM
                DE      0x56               ; 1000 RPM
                DE      0x97               ; 1500 RPM
                DE      0xB8               ; 2000 RPM
                DE      0xCB               ; 2500 RPM
                DE      0xD8               ; 3000 RPM
                DE      0xE2               ; 3500 RPM
                DE      0xE9               ; 4000 RPM
                DE      0xEE               ; 4500 RPM
                DE      0xF2               ; 5000 RPM
                DE      0xF6               ; 5500 RPM
                DE      0xF9               ; 6000 RPM
                DE      0xFB               ; 6500 RPM
                DE      0xFE               ; 7000 RPM

                                           ; ADDRESS: 90, 0x5A

                DE      0X08               ; MINIMUM RPM AFTER START


;**********************************************************************
;*                                                                    *
;*                                                                    *
;*              POWER ON VECTOR                                       *
;*                                                                    *
;*                                                                    *
;**********************************************************************

                ORG     0x000              ; processor reset vector
                clrf    PCLATH             ; ensure page bits are cleared
                goto    main               ; go to beginning of program

;**********************************************************************
;*                                                                    *
;*              INTERRUPT VECTOR                                      *
;*                                                                    *
;**********************************************************************

                ORG     0x004              ; interrupt vector location
                BCF     STATUS, RP1        ;
                BCF     STATUS, RP0        ; Bank0
                movwf   w_temp             ; save off current W register contents
                movf    STATUS,w           ; move status register into W register
                movwf   status_temp        ; save off contents of STATUS register

;**********************************************************************
;*              INTERRUPT CALL                                        *
;**********************************************************************

                BCF     INTCON, GIE        ; All interrupts are disabled

                CALL    introutine         ; Go to interrupt service routine

                BCF     STATUS, RP1        ;
                BCF     STATUS, RP0        ; Bank0
                BCF     INTCON, RBIF       ; RESET RBINT FLAG
                BSF     INTCON, RBIE       ; ENABLE PORTB INT

                movf    status_temp,w      ; retrieve copy of STATUS register
                movwf   STATUS             ; restore pre-isr STATUS register contents
                swapf   w_temp,f
                swapf   w_temp,w           ; restore pre-isr W register contents
                BSF     INTCON, GIE        ; ENABLE ALL INTERRUPTS
                retfie                     ; return from interrupt






;                ORG     0x030             ; program start address
main
;**********************************************************************
;*                                                                    *
;*                                                                    *
;*              Power On Init State                                   *
;*                                                                    *
;*              Purpose: Set up the hardware                          *
;*                                                                    *
;*                                                                    *
;**********************************************************************

⌨️ 快捷键说明

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