PIC microcontroller vehicle instrument with CAN bus communication source code

Publisher:岭南布衣Latest update time:2019-11-08 Source: 51hei Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

The microcontroller source program is as follows:

;******************************************************************************

;                                                                             *

;    Filename:        FB_ZHU_JI_PIC16LF1947.ASM                               *

;    Date:            2012.01.6                                               *

;    File Version:    1.0                                                     *

;                                                                             *

;    Author:                                                           *

;                                                                             *

;                                                                             *

;******************************************************************************

;                                                                             *

;    Files Required: P16F1947.INC                                             *

;                                                                             *

;******************************************************************************

;                                                                             *

;    Notes:                                                                   *

;                                                                             *

;******************************************************************************

;                                                                             *

;    Revision History:                                                        *

;                                                                             *

;******************************************************************************



        list        p=16f1947      ; list directive to define processor

        #include         ; processor specific variable definitions

        #include    

        #include    

        #include    

        ERRORLEVEL 0,-305,-306,-302           ; Messages, Warnings and Errors Printed

                                                  ; Ignore [305] => Using default dest of

                                                  ; 1 file

                                                  ; Ignore [306] => Crossing Page Boundary

;******************************************************************************

;

; CONFIGURATION WORD SETUP

;

; The 'CONFIG' directive is used to embed the configuration word within the 

; .asm file. The lables following the directive are located in the respective 

; .inc file.  See the data sheet for additional information on configuration 

; word settings.

;

;******************************************************************************    

;    __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_ON & _IESO_OFF & _FCMEN_OFF

;    __CONFIG _CONFIG2, _WRT_OFF & _VCAPEN_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF

;******************************************************************************

; RESET VECTOR

;******************************************************************************


       ORG         0x0000            ; processor reset vector

                                                                                                                                                                                                                                                                                         PAGESEL     START

       GOTO        START             ; When using debug header, first inst.

                                     ; may be passed over by ICD2.  

       ORG         0x0004

;******************************************************************************

; INTERRUPT SERVICE ROUTINE

;******************************************************************************

       #include    

;******************************************************************************

; USER INTERRUPT SERVICE ROUTINE GOES HERE

;******************************************************************************

; Note the 16F1936 family automatically handles context restoration for 

; W, STATUS, BSR, FSR, and PCLATH where previous templates for 16F families

; required manual restoration

;******************************************************************************

; MAIN PROGRAM

;******************************************************************************

START  

        PAGESEL     Init_System_Clock      

        CALL        Init_System_Clock

        PAGESEL     $

       

        PAGESEL     Init_Watch_Dog

        CALL        Init_Watch_Dog 

        PAGESEL     $

        

; BANKSEL Zhuan_Su_H_1

; MOVLW 0XFF

; MOVWF Zhuan_Su_H_1

;        MOVLW       0X01

; MOVWF Zhuan_Su_L_1

;        MOVLW       0X00

; MOVWF Zhuan_Su_H_2

; MOVLW 0XFF

; MOVWF Zhuan_Su_L_2

;        MOVLW       0XEE

; MOVWF Zhuan_Su_H_3

;        MOVLW       0X03

; MOVWF Zhuan_Su_L_3

;

; MOVLW LOW Zhuan_Su_H_1

;        MOVWF       FSR0L

; MOVLW HIGH Zhuan_Su_H_1

;        MOVWF       FSR0H

;        PAGESEL     D_Pai_Xu_3Byte 

;        CALL        D_Pai_Xu_3Byte 

;        PAGESEL     $

        

        

; BANKSEL Biao_Wen_1

;        MOVLW       0X01

; MOVWF Biao_Wen_1

;        MOVLW       0X00

; MOVWF Biao_Wen_2

;        MOVLW       0X00

; MOVWF Biao_Wen_3

;        

; MOVLW LOW Biao_Wen_1

;        MOVWF       FSR0L

; MOVLW HIGH Biao_Wen_1

;        MOVWF       FSR0H

;        PAGESEL     Pai_Xu_3Byte

;        CALL        Pai_Xu_3Byte

;        PAGESEL     $

        

        

   

        PAGESEL     Init_IO 

        CALL        Init_IO 

        PAGESEL     $

        

        PAGESEL     Clear_All_GPRAM

        CALL        Clear_All_GPRAM 

        PAGESEL     $

        

; PAGESEL Wa_Si_ChaZhi

;        CALL        Wa_Si_ChaZhi

;        PAGESEL     $

        

        MOVLW       0X03

        BANKSEL B_W_LB_Count ; Use median filtering to set N=3

        MOVWF       B_W_LB_Count

        

;        MOVLW       0X01

; BANKSEL Alarm_Of_H

;        MOVWF       Alarm_Wa_Si_H

;        MOVLW       0X90

; MOVWF Alarm_Search_To_L

        

        PAGESEL Init_SSP 

        CALL        Init_SSP 

        PAGESEL     $


        PAGESEL     Init_Mcp2515 

        CALL        Init_Mcp2515 

        PAGESEL     $

        

        PAGESEL Init_Timer0_1S

        CALL        Init_Timer0_1S

        PAGESEL     $

        

        PAGESEL Init_Timer2_10MS

        CALL        Init_Timer2_10MS

        PAGESEL     $

        

        PAGESEL     Init_Timer4_100MS

        CALL        Init_Timer4_100MS

        PAGESEL     $

        

        PAGESEL     Read_Mile_From_EEPROM

        CALL        Read_Mile_From_EEPROM

        PAGESEL     $

       

        PAGESEL     Read_Data_From_EEPROM

        CALL        Read_Data_From_EEPROM

        PAGESEL     $

         

        PAGESEL     Read_W_L_From_EEPROM

        CALL        Read_W_L_From_EEPROM

        PAGESEL     $

        

        PAGESEL     Read_BD_From_EEPROM

        CALL        Read_BD_From_EEPROM

        PAGESEL     $

       

        PAGESEL     Alarm_Data_Handle

        CALL        Alarm_Data_Handle

        PAGESEL     $

        

        BANKSEL Speed_Count

        CLRF        Speed_Count

        BANKSEL ZhuanSu_Count

        CLRF ZhuanSu_Count

        BANKSEL     Wa_Si_Count

        CLRF        Wa_Si_Count

        BANK SALE TMR1L

        CLRF        TMR1L

        CLRF        TMR1H

        MOVLW       B'00110100'

        MOVWF       T1CON

        

        BANK SALE Flag

        CLRF        Flag

        BANKSEL CCP1CON

        CLRF        CCP1CON

        CLRF        CCP2CON

        

        CLRF        CCPR1L

        CLRF        CCPR1H

        CLRF        CCPR2L

        CLRF        CCPR2H

        

        MOVLW       B'00000101'

        MOVWF       CCP1CON

        MOVLW       B'00000101'

        MOVWF       CCP2CON

        

        BANKSEL     CCP3CON

        CLRF        CCP3CON

        MOVLW       B'00000111'

        MOVWF       CCP3CON

        CLRF        CCPR3L

        CLRF        CCPR3H

        

        BANKSEL PIR1

        BCF         PIR1,TMR2IF

        BCF         PIR3,TMR4IF

        BCF         PIR1,CCP1IF

        BCF         PIR2,CCP2IF

        BANKSEL PIR3

        BCF         PIR3,CCP3IF

        BANKSEL     PIE1

        BSF         PIE1,TMR2IE

        BSF         PIE3,TMR4IE

        BSF PIE1,CCP1IE

        BSF         PIE2,CCP2IE

        BANKSEL PIE3

        BSF         PIE3,CCP3IE

        BANKSEL T4CON

        BSF         T4CON,TMR4ON

        BANKSEL T1CON

        BSF         T1CON,TMR1ON

        BSF         T2CON,TMR2ON

        BCF         INTCON,TMR0IF

        ;BSF         INTCON,TMR0IE

        BSF INTCON,THIS

        BSF         INTCON,GIE

MAIN        

;        PAGESEL     CAN_BUS_TRANSMIT

;        CALL        CAN_BUS_TRANSMIT

;        PAGESEL     $

        

        PAGESEL     AD_Sample

        CALL        AD_Sample

        PAGESEL     $

        

        PAGESEL     Voltage_Calculate

        CALL        Voltage_Calculate

        PAGESEL     $

        

           

;**************************************

; ;Gas treatment

;           MOVLW       0X00 

;BANKING AN0_RESH

;           SUBWF       AN0_RESH,W

;           BTFSS       STATUS,C

; GOTO Wa_Si_Next_1

; GOTO Wa_Si_Next_2

;Wa_Si_Next_1

; BANKSEL Wa_Si_N_D ;<80

; MOVLW 0X55 ; disconnect

;           MOVWF       Wa_Si_N_D

;           GOTO        Wa_Si_Clear

;Wa_Si_Next_2

;           BTFSS       STATUS,Z

; GOTO Wa_Si_Next_3

; GOTO Wa_Si_Next_4

;Wa_Si_Next_3

; ;>=80 Calculate concentration based on voltage

;BANKING AN0_RESH

;           MOVF        AN0_RESH,W

; BANKSEL SOUH

;           MOVWF       SOUH

; BANKSEL AN0_RESL

;MOVF AN0_RESL,W

; BANK CELL SOU

; MOVWF ON

;           MOVLW       0X00

; RLTH BANKSEL

; MOVWF RLTH

;           MOVLW       0X50

; MOVWF RLT

;           

; PAGESEL DUSUB

; CALL DUSUB

;           PAGESEL     $

;           

;           MOVLW       0X00

; RLTH BANKSEL

; MOVWF RLTH

; MOVLW 0X08

; MOVWF RLT

;           

;           PAGESEL     DUDIV

;           CALL        DUDIV

;           PAGESEL     $

[1] [2]
Reference address:PIC microcontroller vehicle instrument with CAN bus communication source code

Previous article:Combination of TM1640 and PIC12F629 microcontroller
Next article:PIC16F877 peripheral function module routine

Latest Microcontroller Articles
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号