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

📄 int.lst

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


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

stmt level    source

   1          //****************************************************************************
   2          // @Module        Interrupt Controller
   3          // @Filename      INT.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 IR
  13          //                
  14          //
  15          //----------------------------------------------------------------------------
  16          // @Date          01-2-24 12:51:12
  17          //
  18          //****************************************************************************
  19          
  20          //////////////////////////////////////////////////////////////////////////////
  21          //Author:LiAnChuan                                                          //
  22          //All copyrights for this routine are reserved;Unauthorized down loading or //
  23          //other kinds of copying prohibited!                                        //
  24          //////////////////////////////////////////////////////////////////////////////
  25          
  26          //****************************************************************************
  27          // @Project Includes
  28          //****************************************************************************
  29          
  30          #include "MAIN.H"
  31          #include "INT.H"
  32          #include "CAN.H"
  33          #include "PER.H"
  34          #include "MSGTABLE.H"
  35          //////////////////////////////////////////////////////////////////////////////
  36          //****************************************************************************
  37          // @variable definition
  38          //****************************************************************************
  39          extern unsigned char xdata MsgTrans[20][8];  //message translated buffer
  40          extern unsigned char xdata diagnostic[8];
  41          extern bit ReceivedFlag;                  //receive ok flag
  42          extern unsigned char xdata  * p;
  43          
  44          extern unsigned char xdata CANSendCTimer;
  45          ////RS232 communication //////////////
  46          extern bit NewReceive;//if a character is received,set this flag
  47          extern unsigned int  xdata ReceiveTimer;//receive delay timer between two character
  48          extern unsigned char xdata ReceiveBuffer[RXD_MAX_NUM];//
  49          extern unsigned char xdata SendBuffer[TXD_MAX_NUM];
  50          extern unsigned char xdata ReceiveCounter;
  51          extern unsigned char xdata SendCounter;
  52          extern bit NewCommand;//if a command have been received ,set this flag to indicator
  53                                          //the command is processing
  54          extern unsigned char xdata SendNumber;//need sending byte number
  55          extern unsigned char xdata SendTimer;
C51 COMPILER V7.06   INT                                                                   10/23/2004 16:55:18 PAGE 2   

  56          extern bit ReceiveRight;
  57          extern unsigned char xdata RunTime;
  58          extern unsigned char xdata FuelUse;
  59          extern unsigned char xdata RunErrorTimes;
  60          extern unsigned char xdata GateTimer;
  61          //////////////////////////////////////////////////////////////////////////////////
  62          extern unsigned char xdata ADTimer;
  63          extern unsigned char PowerOnTimer;
  64          extern bit PowerOn;
  65          
  66          extern float xdata RunMileage;//mileage from engine starting to engine stopping
  67          extern float xdata SingleMileage;//mileage from last clearing
  68          extern float xdata TotalMileage;//total mileage
  69          extern unsigned char xdata MileageTimer;//1s timer for calculating mileage
  70          extern unsigned int xdata SaveTimer;//10min auto save timer
  71          extern bit SaveFlag;//
  72          extern unsigned int xdata SlaveTimer1;//if slave have sent right message clear the timer
  73          extern unsigned int xdata SlaveTimer2;//else if the counter value is more enought ,reset system
  74          
  75          extern unsigned char xdata ErrorCodeTimes[30];//error code times,if no error ErrorCodeTimes[]=0
  76                                                                          //else ErrorCodeTimes[]++,if ErrorCodeTimes[]>ERROR_TIMES
  77                                                                          //set the error bit
  78          extern unsigned int xdata ClearDelayTimer1;//clear error code delay timer
  79          extern unsigned int xdata ClearDelayTimer2;//clear single mileage delay timer
  80          extern unsigned char xdata ClearOnTimer1;//clear switch on times
  81          extern unsigned char xdata ClearOnTimer2;
  82          extern bit ClearErrorFlag;
  83          extern bit ClearMileageFlag;
  84          extern unsigned char T0IntCounter;
  85          extern unsigned char TH0Buffer;
  86          extern unsigned char TL0Buffer;
  87          extern unsigned char T0IntBuffer;
  88          extern unsigned char EX1OffTimer;
  89          extern bit EX1IntFlag;
  90          extern unsigned char Fre2CalTimer;
  91          extern bit Fre2CalFlag;
  92          extern unsigned char Send_count;
  93          extern unsigned char Send_count1;
  94          extern unsigned char Send_count2;
  95          extern unsigned char Send_obj;
  96          extern unsigned char Send_data;
  97          extern bit cantransflag;
  98          //extern unsigned int xdata FuelQTimer;
  99          //extern unsigned int xdata WaterTimer;
 100          
 101          //////////////////////////////////////////////////////////////////////////////
 102          
 103          void INT_vInit(void)
 104          {
 105   1        /// ---------- external interrupt 0 ----------
 106   1        ///  enable
 107   1        EX0 = 1;
 108   1        IT0=1;
 109   1        /// ---------- external interrupt 1 ----------
 110   1        ///  disabled
 111   1        EX1=1;
 112   1        IT1=1;
 113   1        ET0=1;
 114   1        ET2=1;
 115   1        ///----------serial port interrup----------
 116   1        ES=1;
 117   1        /// enabled
C51 COMPILER V7.06   INT                                                                   10/23/2004 16:55:18 PAGE 3   

 118   1        ECAN=1;   //* for C505C *
 119   1        //IEN2 = 0x02;  //* for C515C *
 120   1        ///---------- timer interrupt-----------------
 121   1       
 122   1        //ET1=1;   //enable Timer1 interrupt.
 123   1       // ET2=1;
 124   1        ///-----------interrupt prioty----------------
 125   1      ///////#########
 126   1      //  IP0 |=0x06;//sirial port is high priority.
 127   1      //  IP1 |=0x10;
 128   1              IP1     |=0x07;
 129   1              IP0     |=0x05;
 130   1        ///clear all interrupt requests to prevent unintentional generation of an interrupt
 131   1        IRCON=0x00;
 132   1        ///-------- globally enable interrupts---------
 133   1      
 134   1        EA=1; 
 135   1      }
 136          
 137          //This is the interrupt service routine for the 
 138          //software-interrupt (shared with CAN vector).
 139          
 140          void INT_viIsrSwi(void) interrupt CANI 
 141          {  
 142   1          unsigned char can_status,int_reg;       //define two variables to save CAN status 
 143   1                                                //register and interrupt register's value; 
 144   1              while(int_reg=IR)            //while interrupt identifier(INTID) not zero
 145   1          {
 146   2              can_status=SR;
 147   2                      SR=0;            //read and reset CAN status.   
 148   2              switch (int_reg)
 149   2              {
 150   3                  case 1: //--Status and error interrupt--
 151   3                                      if (CR&0x04) //SIE=1***********status interrupt*******
 152   3                      {
 153   4                          if(can_status & 0x08)        //transmit interrupt
 154   4                          {
 155   5                              ;
 156   5                          }
 157   4                          if(can_status & 0x10)        //receive interrupt
 158   4                          {
 159   5                              ;
 160   5                          }
 161   4                          if(can_status & 0x07)        //erroneous transfer
 162   4                          {
 163   5                              ;
 164   5                          }               
 165   4                      }
 166   3      
 167   3                      if (CR&0x08) //EIE=1************error interrupt*********
 168   3                      {
 169   4                          if(can_status & 0x40)        //EWEN has changed
 170   4                          {
 171   5                            //  if(ErrorTimes<ERRORTIMES)
 172   5                            //  {
 173   5                                              //              ErrorTimes++;
 174   5                                              //      }
 175   5                            //  else
 176   5                           //   {
 177   5                                  CAN_vInit();         //initialize CAN controller again
 178   5                                              //              ErrorTimes=0;
 179   5                                                              //ErrorFlag=1;
C51 COMPILER V7.06   INT                                                                   10/23/2004 16:55:18 PAGE 4   

 180   5                           //   }
 181   5                          }
 182   4                          if(can_status & 0x80)        //BUSOFF has changed
 183   4                          {
 184   5                             // if(ErrorTimes<ERRORTIMES)
 185   5                             // {
 186   5                                                      //      ErrorTimes++;
 187   5                              //}
 188   5                              //else
 189   5                             // {
 190   5                                  CAN_vInit();         //initialize CAN controller again
 191   5                                                      //      ErrorTimes=0;
 192   5                                                              //ErrorFlag=1;
 193   5                            //  }
 194   5                          }
 195   4                      }
 196   3                      break;
 197   3                  case 2:                      //-----Message Object 15 interrupt---------
 198   3                      break;
 199   3                  case 3:                      //-----Message Object 1 interrupt ----------
 200   3                                      set_msg_MCR(1,INTPND,0); //reset INTPND
 201   3                      if(can_status & 0x08)    //transmit interrupt
 202   3                      {
 203   4                          ;       
 204   4                      }
 205   3                      if(can_status & 0x10)     //receive interrupt
 206   3                      {                               
 207   4                           CAN_vStoreMsgObj(2,p);//save the received data to buffer 
 208   4                          set_msg_MCR(2,NEWDAT,0);        //reset NEWDAT.
 209   4      //                                      CAN_vStoreID(2,IDArray);//save id inorder to judge whether 
 210   4                              ReceivedFlag=1;          //indicate that communication is proper. 
 211   4                                              cantransflag=1;
 212   4      //                    ErrorTimes=0;

⌨️ 快捷键说明

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