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

📄 can.lst

📁 Keil 下编译的基于mcs51单片机的PCA82C250CAN收发器控制的程序源代码。
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.06   CAN                                                                   10/23/2004 16:55:18 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CAN
OBJECT MODULE PLACED IN Can.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Can.c OPTIMIZE(4,SPEED) BROWSE MOD517(NOAU) DEBUG OBJECTEXTEND

stmt level    source

   1          //****************************************************************************
   2          // @Module        CAN
   3          // @Filename      CAN.C
   4          // @Project       
   5          //----------------------------------------------------------------------------
   6          // @Controller    Infineon C505C-2R
   7          //
   8          // @Compiler      Keil
   9          //
  10          // @Codegenerator DAvE 2-0-0
  11          //
  12          // @Description   This file contains all functions that use the CAN peripheral
  13          //                
  14          //
  15          //----------------------------------------------------------------------------
  16          // @Date          2001-2-24 12:51:13
  17          //****************************************************************************
  18          
  19          ///////////////////////////////////////////////////////////////////////////////
  20          // Author:Li An Chuan                                                        //
  21          // All copyrights for this routine are reserved;Unauthorized down loading or //
  22          // other kinds of copying prohibited!                                        //
  23          ///////////////////////////////////////////////////////////////////////////////
  24          
  25          //Project includes
  26          #include "MAIN.H"
  27          #include "CAN.H"
  28          #include "PER.H"
  29          
  30          //***************************************************************************
  31          // @Global Variables
  32          //***************************************************************************
  33          
  34          ////////////////////初始化函数/////////////////////////////////////////////////
  35          //****************************************************************************
  36          // @Function      void CAN_vInit(void)
  37          //
  38          //----------------------------------------------------------------------------
  39          // @Description   This function initializes the CAN component. It effects 
  40          //                all necessary configurations of the SFR, depending on 
  41          //                the selected operating mode. The configuration determines 
  42          //                whether the CAN interrupts are to be released and the 
  43          //                priority of the released interrupt.
  44          //
  45          //----------------------------------------------------------------------------
  46          // @Returnvalue   none
  47          //
  48          //----------------------------------------------------------------------------
  49          // @Parameters    none
  50          //
  51          //----------------------------------------------------------------------------
  52          // @Date          01-2-24 12:51:13
  53          //
  54          //****************************************************************************
  55          
C51 COMPILER V7.06   CAN                                                                   10/23/2004 16:55:18 PAGE 2   

  56          void CAN_vInit(void) reentrant
  57          {
  58   1      
  59   1        //  ------------ CAN Control/Status Register --------------
  60   1        //  start the initialization of the CAN Modul
  61   1        CR  = 0x41;  // set INIT and CCE
  62   1        
  63   1        ///  ------------ Bit Timing Register ---------------------
  64   1        /// baudrate =  250.000 KBaud
  65   1        /// there are 5 time quanta before sample point
  66   1        /// there are 4 time quanta after sample point
  67   1        /// the (re)synchronization jump width is 2 time quanta
  68   1        BTR1  = 0x49;  // set Bit Timing Register
  69   1        BTR0  = 0x42; 
  70   1      
  71   1        GMS1 = 0x60;  // set Global Mask Short Register 1
  72   1        GMS0 = 0x00;  // set Global Mask Short Register 0
  73   1      
  74   1        UGML1 = 0xFF;  // set Upper Global Mask Long Register 1
  75   1        UGML0 = 0xFF;  // set Upper Global Mask Long Register 0
  76   1      
  77   1        LGML1 = 0xFF;  // set Lower Global Mask Long Register 1
  78   1        LGML0 = 0xFF;  // set Lower Global Mask Long Register 0
  79   1      
  80   1        UMLM1 = 0xFF;  //set last message object Mask Register
  81   1        UMLM0 = 0xFF;
  82   1        LMLM1 = 0xFF;
  83   1        LMLM0 = 0xFF;
  84   1       
  85   1        //  ------------------------------------------------------------------------
  86   1        /// ----------------- Configure Message Object 1 ---------------------------
  87   1        //  ------------------------------------------------------------------------
  88   1        /// Message object 1 is valid.
  89   1        /// disable transmit interrupt
  90   1        ///ID=0x01;CVN-101M
  91   1        CAN_OBJ[0].MCR1  = 0x55;    // set Message Control Register 1
  92   1        CAN_OBJ[0].MCR0  = 0x95;    // set Message Control Register 0;
  93   1                                    // enable MSGVAL and TXIE
  94   1        /// message direction is transmit
  95   1        /// standard 11-bit identifier
  96   1        /// 8 valid data bytes
  97   1        CAN_OBJ[0].MCFG = 0x88;     // set Message Configuration Register
  98   1                                    //data length 8;transmit direction
  99   1        //ID=01;
 100   1        CAN_OBJ[0].UAR1  = 0x20;    // set Upper Arbitration Register 1
 101   1        CAN_OBJ[0].UAR0  = 0x00;    // set Upper Arbitration Register 0
 102   1        CAN_OBJ[0].LAR1  = 0x00;    // set Lower Arbitration Register 1
 103   1        CAN_OBJ[0].LAR0  = 0x00;    // set Lower Arbitration Register 0
 104   1            
 105   1        CAN_OBJ[0].Data[0] = 0x00;   // set data byte 0 
 106   1        CAN_OBJ[0].Data[1] = 0x00;   // set data byte 1
 107   1        CAN_OBJ[0].Data[2] = 0x00;   // set data byte 2 
 108   1        CAN_OBJ[0].Data[3] = 0x00;   // set data byte 3
 109   1        CAN_OBJ[0].Data[4] = 0x00;   // set data byte 4 
 110   1        CAN_OBJ[0].Data[5] = 0x00;   // set data byte 5
 111   1        CAN_OBJ[0].Data[6] = 0x00;   // set data byte 6 
 112   1        CAN_OBJ[0].Data[7] = 0x00;   // set data byte 7
 113   1        
 114   1        //  ------------------------------------------------------------------------
 115   1        /// ----------------- Configure Message Object 2 ---------------------------
 116   1        //  ------------------------------------------------------------------------
 117   1        /// Message object 2 is valid
C51 COMPILER V7.06   CAN                                                                   10/23/2004 16:55:18 PAGE 3   

 118   1        /// enable receive interrupt
 119   1        CAN_OBJ[1].MCR1  = 0x55;    // set Message Control Register 1
 120   1        CAN_OBJ[1].MCR0  = 0x95;    // set Message Control Register 0
 121   1                                    // enable MSGVAL and RXIE
 122   1        /// message direction is receive
 123   1        /// standard 11-bit identifier
 124   1        CAN_OBJ[1].MCFG = 0x88;     // set Message Configuration Register
 125   1      
 126   1        CAN_OBJ[1].UAR1  = 0x40;    // set Upper Arbitration Register 1
 127   1        CAN_OBJ[1].UAR0  = 0x00;    // set Upper Arbitration Register 0
 128   1        CAN_OBJ[1].LAR1  = 0x00;    // set Lower Arbitration Register 1
 129   1        CAN_OBJ[1].LAR0  = 0x00;    // set Lower Arbitration Register 0
 130   1                                    //ID=0x02.  
 131   1      
 132   1        //  ------------------------------------------------------------------------
 133   1        /// ----------------- Configure Message Object 3 ---------------------------
 134   1         /// message object 3 is not valid
 135   1        CAN_OBJ[2].MCR1  = 0x55;    // set Message Control Register 1
 136   1        CAN_OBJ[2].MCR0  = 0x99;    // set Message Control Register 0;
 137   1                                    // enable MSGVAL and TXIE
 138   1        /// message direction is transmit
 139   1        /// standard 11-bit identifier
 140   1        /// 8 valid data bytes
 141   1        CAN_OBJ[2].MCFG = 0x00;     // set Message Configuration Register
 142   1                                    //data length 8;transmit direction
 143   1        //ID=03;
 144   1        CAN_OBJ[2].UAR1  = 0x60;    // set Upper Arbitration Register 1
 145   1        CAN_OBJ[2].UAR0  = 0x00;    // set Upper Arbitration Register 0
 146   1        CAN_OBJ[2].LAR1  = 0x00;    // set Lower Arbitration Register 1
 147   1        CAN_OBJ[2].LAR0  = 0x00;    // set Lower Arbitration Register 0
 148   1            
 149   1        CAN_OBJ[2].Data[0] = 0x00;   // set data byte 0 
 150   1        CAN_OBJ[2].Data[1] = 0x00;   // set data byte 1
 151   1        CAN_OBJ[2].Data[2] = 0x00;   // set data byte 2 
 152   1        CAN_OBJ[2].Data[3] = 0x00;   // set data byte 3
 153   1        CAN_OBJ[2].Data[4] = 0x00;   // set data byte 4 
 154   1        CAN_OBJ[2].Data[5] = 0x00;   // set data byte 5
 155   1        CAN_OBJ[2].Data[6] = 0x00;   // set data byte 6 
 156   1        CAN_OBJ[2].Data[7] = 0x00;   // set data byte 7
 157   1      
 158   1        //  ------------------------------------------------------------------------
 159   1        /// ----------------- Configure Message Object 4 ---------------------------
 160   1        //  ------------------------------------------------------------------------
 161   1         /// message object 4 is not valid
 162   1        CAN_OBJ[3].MCR1  = 0x55;    // set Message Control Register 1
 163   1        CAN_OBJ[3].MCR0  = 0x95;    // set Message Control Register 0;
 164   1                                    // enable MSGVAL and TXIE
 165   1        /// message direction is transmit
 166   1        /// standard 11-bit identifier
 167   1        /// 8 valid data bytes
 168   1        CAN_OBJ[3].MCFG = 0x88;     // set Message Configuration Register
 169   1                                    //data length 8;transmit direction
 170   1        //ID=04;
 171   1        CAN_OBJ[3].UAR1  = 0x80;    // set Upper Arbitration Register 1
 172   1        CAN_OBJ[3].UAR0  = 0x00;    // set Upper Arbitration Register 0
 173   1        CAN_OBJ[3].LAR1  = 0x00;    // set Lower Arbitration Register 1
 174   1        CAN_OBJ[3].LAR0  = 0x00;    // set Lower Arbitration Register 0
 175   1            
 176   1        CAN_OBJ[3].Data[0] = 0x00;   // set data byte 0 
 177   1        CAN_OBJ[3].Data[1] = 0x00;   // set data byte 1
 178   1        CAN_OBJ[3].Data[2] = 0x00;   // set data byte 2 
 179   1        CAN_OBJ[3].Data[3] = 0x00;   // set data byte 3
C51 COMPILER V7.06   CAN                                                                   10/23/2004 16:55:18 PAGE 4   

 180   1        CAN_OBJ[3].Data[4] = 0x00;   // set data byte 4 
 181   1        CAN_OBJ[3].Data[5] = 0x00;   // set data byte 5
 182   1        CAN_OBJ[3].Data[6] = 0x00;   // set data byte 6 
 183   1        CAN_OBJ[3].Data[7] = 0x00;   // set data byte 7
 184   1        //  ------------------------------------------------------------------------
 185   1        /// ----------------- Configure Message Object 5 ---------------------------
 186   1        //  ------------------------------------------------------------------------
 187   1         /// message object 5 is not valid
 188   1        CAN_OBJ[4].MCR1  = 0x55;    // set Message Control Register 1
 189   1        CAN_OBJ[4].MCR0  = 0x95;    // set Message Control Register 0;
 190   1                                    // enable MSGVAL and TXIE
 191   1        /// message direction is transmit
 192   1        /// standard 11-bit identifier
 193   1        /// 8 valid data bytes
 194   1        CAN_OBJ[4].MCFG = 0x88;     // set Message Configuration Register
 195   1                                    //data length 8;transmit direction
 196   1        //ID=05;
 197   1        CAN_OBJ[4].UAR1  = 0xa0;    // set Upper Arbitration Register 1
 198   1        CAN_OBJ[4].UAR0  = 0x00;    // set Upper Arbitration Register 0
 199   1        CAN_OBJ[4].LAR1  = 0x00;    // set Lower Arbitration Register 1
 200   1        CAN_OBJ[4].LAR0  = 0x00;    // set Lower Arbitration Register 0
 201   1            
 202   1        CAN_OBJ[4].Data[0] = 0x00;   // set data byte 0 
 203   1        CAN_OBJ[4].Data[1] = 0x00;   // set data byte 1
 204   1        CAN_OBJ[4].Data[2] = 0x00;   // set data byte 2 
 205   1        CAN_OBJ[4].Data[3] = 0x00;   // set data byte 3
 206   1        CAN_OBJ[4].Data[4] = 0x00;   // set data byte 4 
 207   1        CAN_OBJ[4].Data[5] = 0x00;   // set data byte 5
 208   1        CAN_OBJ[4].Data[6] = 0x00;   // set data byte 6 
 209   1        CAN_OBJ[4].Data[7] = 0x00;   // set data byte 7
 210   1      
 211   1        //  ------------------------------------------------------------------------
 212   1        /// ----------------- Configure Message Object 6 ---------------------------
 213   1        //  ------------------------------------------------------------------------
 214   1        /// message object 5 is not valid
 215   1        CAN_OBJ[5].MCR1  = 0x55;    // set Message Control Register 1
 216   1        CAN_OBJ[5].MCR0  = 0x95;    // set Message Control Register 0;
 217   1                                    // enable MSGVAL and TXIE
 218   1        /// message direction is transmit
 219   1        /// standard 11-bit identifier
 220   1        /// 8 valid data bytes
 221   1        CAN_OBJ[5].MCFG = 0x88;     // set Message Configuration Register
 222   1                                    //data length 8;transmit direction
 223   1        //ID=05;
 224   1        CAN_OBJ[5].UAR1  = 0xc0;    // set Upper Arbitration Register 1
 225   1        CAN_OBJ[5].UAR0  = 0x00;    // set Upper Arbitration Register 0
 226   1        CAN_OBJ[5].LAR1  = 0x00;    // set Lower Arbitration Register 1
 227   1        CAN_OBJ[5].LAR0  = 0x00;    // set Lower Arbitration Register 0
 228   1            
 229   1        CAN_OBJ[5].Data[0] = 0x00;   // set data byte 0 
 230   1        CAN_OBJ[5].Data[1] = 0x00;   // set data byte 1
 231   1        CAN_OBJ[5].Data[2] = 0x00;   // set data byte 2 
 232   1        CAN_OBJ[5].Data[3] = 0x00;   // set data byte 3
 233   1        CAN_OBJ[5].Data[4] = 0x00;   // set data byte 4 
 234   1        CAN_OBJ[5].Data[5] = 0x00;   // set data byte 5
 235   1        CAN_OBJ[5].Data[6] = 0x00;   // set data byte 6 
 236   1        CAN_OBJ[5].Data[7] = 0x00;   // set data byte 7
 237   1      
 238   1        //  ------------------------------------------------------------------------
 239   1        /// ----------------- Configure Message Object 7 ---------------------------
 240   1         /// message object 7 is not valid
 241   1        CAN_OBJ[6].MCR1  = 0x55;    // set Message Control Register 1
C51 COMPILER V7.06   CAN                                                                   10/23/2004 16:55:18 PAGE 5   

⌨️ 快捷键说明

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