找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4029|回复: 0
收起左侧

PIC单片机车载仪表带CAN总线通讯源代码

[复制链接]
ID:387723 发表于 2018-8-19 01:12 | 显示全部楼层 |阅读模式
PIC系列单片机源代码
0.png

单片机源程序如下:
  1. ;******************************************************************************
  2. ;                                                                             *
  3. ;    Filename:        FB_ZHU_JI_PIC16LF1947.ASM                               *
  4. ;    Date:            2012.01.6                                               *
  5. ;    File Version:    1.0                                                     *
  6. ;                                                                             *
  7. ;    Author:                                                           *
  8. ;                                                                             *
  9. ;                                                                             *
  10. ;******************************************************************************
  11. ;                                                                             *
  12. ;    Files Required: P16F1947.INC                                             *
  13. ;                                                                             *
  14. ;******************************************************************************
  15. ;                                                                             *
  16. ;    Notes:                                                                   *
  17. ;                                                                             *
  18. ;******************************************************************************
  19. ;                                                                             *
  20. ;    Revision History:                                                        *
  21. ;                                                                             *
  22. ;******************************************************************************


  23.         list        p=16f1947      ; list directive to define processor
  24.         #include        <P16F1947.INC> ; processor specific variable definitions
  25.         #include    <MyDefine.inc>
  26.         #include    <reg2510.inc>
  27.         #include    <MY_STD.MAC>
  28.         ERRORLEVEL 0,-305,-306,-302           ; Messages, Warnings and Errors Printed
  29.                                                   ; Ignore [305] => Using default dest of
  30.                                                   ; 1 file
  31.                                                   ; Ignore [306] => Crossing Page Boundary
  32. ;******************************************************************************
  33. ;
  34. ; CONFIGURATION WORD SETUP
  35. ;
  36. ; The 'CONFIG' directive is used to embed the configuration word within the
  37. ; .asm file. The lables following the directive are located in the respective
  38. ; .inc file.  See the data sheet for additional information on configuration
  39. ; word settings.
  40. ;
  41. ;******************************************************************************   
  42. ;    __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_ON & _IESO_OFF & _FCMEN_OFF
  43. ;    __CONFIG _CONFIG2, _WRT_OFF & _VCAPEN_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF
  44. ;******************************************************************************
  45. ; RESET VECTOR
  46. ;******************************************************************************

  47.        ORG         0x0000            ; processor reset vector
  48.                                                                                                                                                                                                                                                                                          PAGESEL     START
  49.        GOTO        START             ; When using debug header, first inst.
  50.                                      ; may be passed over by ICD2.  
  51.        ORG         0x0004
  52. ;******************************************************************************
  53. ; INTERRUPT SERVICE ROUTINE
  54. ;******************************************************************************
  55.        #include   <Interrupt.asm>
  56. ;******************************************************************************
  57. ; USER INTERRUPT SERVICE ROUTINE GOES HERE
  58. ;******************************************************************************
  59. ; Note the 16F1936 family automatically handles context restoration for
  60. ; W, STATUS, BSR, FSR, and PCLATH where previous templates for 16F families
  61. ; required manual restoration
  62. ;******************************************************************************
  63. ; MAIN PROGRAM
  64. ;******************************************************************************
  65. START  
  66.         PAGESEL     Init_System_Clock      
  67.         CALL        Init_System_Clock
  68.         PAGESEL     $
  69.       
  70.         PAGESEL     Init_Watch_Dog
  71.         CALL        Init_Watch_Dog
  72.         PAGESEL     $
  73.         
  74. ;        BANKSEL     Zhuan_Su_H_1
  75. ;        MOVLW       0XFF
  76. ;        MOVWF       Zhuan_Su_H_1
  77. ;        MOVLW       0X01
  78. ;        MOVWF       Zhuan_Su_L_1
  79. ;        MOVLW       0X00
  80. ;        MOVWF       Zhuan_Su_H_2
  81. ;        MOVLW       0XFF
  82. ;        MOVWF       Zhuan_Su_L_2
  83. ;        MOVLW       0XEE
  84. ;        MOVWF       Zhuan_Su_H_3
  85. ;        MOVLW       0X03
  86. ;        MOVWF       Zhuan_Su_L_3
  87. ;
  88. ;        MOVLW       LOW  Zhuan_Su_H_1
  89. ;        MOVWF       FSR0L
  90. ;        MOVLW       HIGH  Zhuan_Su_H_1
  91. ;        MOVWF       FSR0H
  92. ;        PAGESEL     D_Pai_Xu_3Byte
  93. ;        CALL        D_Pai_Xu_3Byte
  94. ;        PAGESEL     $
  95.         
  96.         
  97. ;        BANKSEL     Biao_Wen_1
  98. ;        MOVLW       0X01
  99. ;        MOVWF       Biao_Wen_1
  100. ;        MOVLW       0X00
  101. ;        MOVWF       Biao_Wen_2
  102. ;        MOVLW       0X00
  103. ;        MOVWF       Biao_Wen_3
  104. ;        
  105. ;        MOVLW       LOW  Biao_Wen_1
  106. ;        MOVWF       FSR0L
  107. ;        MOVLW       HIGH  Biao_Wen_1
  108. ;        MOVWF       FSR0H
  109. ;        PAGESEL     Pai_Xu_3Byte
  110. ;        CALL        Pai_Xu_3Byte
  111. ;        PAGESEL     $
  112.         
  113.         
  114.    
  115.         PAGESEL     Init_IO
  116.         CALL        Init_IO
  117.         PAGESEL     $
  118.         
  119.         PAGESEL     Clear_All_GPRAM
  120.         CALL        Clear_All_GPRAM
  121.         PAGESEL     $
  122.         
  123. ;        PAGESEL     Wa_Si_ChaZhi
  124. ;        CALL        Wa_Si_ChaZhi
  125. ;        PAGESEL     $
  126.         
  127.         MOVLW       0X03
  128.         BANKSEL     B_W_LB_Count       ;采用中值滤波 将N=3
  129.         MOVWF       B_W_LB_Count
  130.         
  131. ;        MOVLW       0X01
  132. ;        BANKSEL     Alarm_Wa_Si_H
  133. ;        MOVWF       Alarm_Wa_Si_H
  134. ;        MOVLW       0X90
  135. ;        MOVWF       Alarm_Wa_Si_L
  136.         
  137.         PAGESEL     Init_SSP
  138.         CALL        Init_SSP
  139.         PAGESEL     $

  140.         PAGESEL     Init_Mcp2515
  141.         CALL        Init_Mcp2515
  142.         PAGESEL     $
  143.         
  144.         PAGESEL     Init_Timer0_1S
  145.         CALL        Init_Timer0_1S
  146.         PAGESEL     $
  147.         
  148.         PAGESEL     Init_Timer2_10MS
  149.         CALL        Init_Timer2_10MS
  150.         PAGESEL     $
  151.         
  152.         PAGESEL     Init_Timer4_100MS
  153.         CALL        Init_Timer4_100MS
  154.         PAGESEL     $
  155.         
  156.         PAGESEL     Read_Mile_From_EEPROM
  157.         CALL        Read_Mile_From_EEPROM
  158.         PAGESEL     $
  159.       
  160.         PAGESEL     Read_Data_From_EEPROM
  161.         CALL        Read_Data_From_EEPROM
  162.         PAGESEL     $
  163.          
  164.         PAGESEL     Read_W_L_From_EEPROM
  165.         CALL        Read_W_L_From_EEPROM
  166.         PAGESEL     $
  167.         
  168.         PAGESEL     Read_BD_From_EEPROM
  169.         CALL        Read_BD_From_EEPROM
  170.         PAGESEL     $
  171.       
  172.         PAGESEL     Alarm_Data_Handle
  173.         CALL        Alarm_Data_Handle
  174.         PAGESEL     $
  175.         
  176.         BANKSEL     Speed_Count
  177.         CLRF        Speed_Count
  178.         BANKSEL     ZhuanSu_Count
  179.         CLRF        ZhuanSu_Count
  180.         BANKSEL     Wa_Si_Count
  181.         CLRF        Wa_Si_Count
  182.         BANKSEL     TMR1L
  183.         CLRF        TMR1L
  184.         CLRF        TMR1H
  185.         MOVLW       B'00110100'
  186.         MOVWF       T1CON
  187.         
  188.         BANKSEL     Flag
  189.         CLRF        Flag
  190.         BANKSEL     CCP1CON
  191.         CLRF        CCP1CON
  192.         CLRF        CCP2CON
  193.         
  194.         CLRF        CCPR1L
  195.         CLRF        CCPR1H
  196.         CLRF        CCPR2L
  197.         CLRF        CCPR2H
  198.         
  199.         MOVLW       B'00000101'
  200.         MOVWF       CCP1CON
  201.         MOVLW       B'00000101'
  202.         MOVWF       CCP2CON
  203.         
  204.         BANKSEL     CCP3CON
  205.         CLRF        CCP3CON
  206.         MOVLW       B'00000111'
  207.         MOVWF       CCP3CON
  208.         CLRF        CCPR3L
  209.         CLRF        CCPR3H
  210.         
  211.         BANKSEL     PIR1
  212.         BCF         PIR1,TMR2IF
  213.         BCF         PIR3,TMR4IF
  214.         BCF         PIR1,CCP1IF
  215.         BCF         PIR2,CCP2IF
  216.         BANKSEL     PIR3
  217.         BCF         PIR3,CCP3IF
  218.         BANKSEL     PIE1
  219.         BSF         PIE1,TMR2IE
  220.         BSF         PIE3,TMR4IE
  221.         BSF         PIE1,CCP1IE
  222.         BSF         PIE2,CCP2IE
  223.         BANKSEL     PIE3
  224.         BSF         PIE3,CCP3IE
  225.         BANKSEL     T4CON
  226.         BSF         T4CON,TMR4ON
  227.         BANKSEL     T1CON
  228.         BSF         T1CON,TMR1ON
  229.         BSF         T2CON,TMR2ON
  230.         BCF         INTCON,TMR0IF
  231.         ;BSF         INTCON,TMR0IE
  232.         BSF         INTCON,PEIE
  233.         BSF         INTCON,GIE
  234. MAIN        
  235. ;        PAGESEL     CAN_BUS_TRANSMIT
  236. ;        CALL        CAN_BUS_TRANSMIT
  237. ;        PAGESEL     $
  238.         
  239.         PAGESEL     AD_Sample
  240.         CALL        AD_Sample
  241.         PAGESEL     $
  242.         
  243.         PAGESEL     Voltage_Calculate
  244.         CALL        Voltage_Calculate
  245.         PAGESEL     $
  246.         
  247.            
  248. ;**************************************
  249. ;           ;瓦斯处理
  250. ;           MOVLW       0X00
  251. ;           BANKSEL     AN0_RESH
  252. ;           SUBWF       AN0_RESH,W
  253. ;           BTFSS       STATUS,C
  254. ;           GOTO        Wa_Si_Next_1
  255. ;           GOTO        Wa_Si_Next_2
  256. ;Wa_Si_Next_1
  257. ;           BANKSEL     Wa_Si_N_D           ;<80
  258. ;           MOVLW       0X55                ;断线
  259. ;           MOVWF       Wa_Si_N_D
  260. ;           GOTO        Wa_Si_Clear
  261. ;Wa_Si_Next_2
  262. ;           BTFSS       STATUS,Z
  263. ;           GOTO        Wa_Si_Next_3
  264. ;           GOTO        Wa_Si_Next_4
  265. ;Wa_Si_Next_3
  266. ;                                            ;>=80 根据电压计算浓度
  267. ;           BANKSEL     AN0_RESH
  268. ;           MOVF        AN0_RESH,W
  269. ;           BANKSEL     SOUH
  270. ;           MOVWF       SOUH
  271. ;           BANKSEL     AN0_RESL
  272. ;           MOVF        AN0_RESL,W
  273. ;           BANKSEL     SOU
  274. ;           MOVWF       SOU
  275. ;           MOVLW       0X00
  276. ;           BANKSEL     RLTH
  277. ;           MOVWF       RLTH
  278. ;           MOVLW       0X50
  279. ;           MOVWF       RLT
  280. ;           
  281. ;           PAGESEL     DUSUB
  282. ;           CALL        DUSUB
  283. ;           PAGESEL     $
  284. ;           
  285. ;           MOVLW       0X00
  286. ;           BANKSEL     RLTH
  287. ;           MOVWF       RLTH
  288. ;           MOVLW       0X08
  289. ;           MOVWF       RLT
  290. ;           
  291. ;           PAGESEL     DUDIV
  292. ;           CALL        DUDIV
  293. ;           PAGESEL     $
  294. ;           
  295. ;           BANKSEL     SOU
  296. ;           MOVF        SOU,W
  297. ;           BANKSEL     Wa_Si_N_D         
  298. ;           MOVWF       Wa_Si_N_D
  299. ;           GOTO        Wa_Si_Clear
  300. ;Wa_Si_Next_4
  301. ;           MOVLW       0X50
  302. ;           BANKSEL     AN0_RESL
  303. ;           SUBWF       AN0_RESL,W
  304. ;           BTFSS       STATUS,C
  305. ;           GOTO        Wa_Si_Next_1
  306. ;           GOTO        Wa_Si_Next_3
  307. ;Wa_Si_Clear
  308.            ;和瓦斯报警关联的处理      
  309. ;**************************************
  310.       
  311.         PAGESEL     Wen_Du_Cha_Zhi
  312.         CALL        Wen_Du_Cha_Zhi    ;根据标定计算各个温度差值
  313.         PAGESEL     $  
  314.                                       
  315. Biao_Wen_BD                                                           
  316.         BANKSEL     AN5_RESH
  317.         MOVF        AN5_RESH,W
  318. ……………………

  319. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
F_B_Z_J_V2.0.2012.8.29.rar (1.21 MB, 下载次数: 26)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表