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

📄 can591_pelifunc.lst

📁 can总线通信的以C51庫文件
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE CAN591_PELIFUNC
OBJECT MODULE PLACED IN CAN591_PELIfunc.OBJ
COMPILER INVOKED BY: C:\KEIL_V7\C51\BIN\C51.EXE CAN591_PELIfunc.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2           *********************************************************************************************************
             -***********
   3           *描述:    P8XC591CANpelican模式应用函数文件
   4           *文件名:   CAN591_PELIfunc.C
   5           *应用语言: KEIL C51
   6           *版本 :    V1.0
   7           *广州周立功单片机发展有限公司 保留所有的版权
   8           *********************************************************************************************************
             -***********
   9           */
  10          #define         _SJA_PELICAN_MODE_
  11          #define         _GLOBAL_CAN591_PELI_APP_
  12          
  13          /*
  14          **********************************************************************************************************
             -**************
  15          **                           导入头文件
  16          **********************************************************************************************************
             -**************
  17          */
  18          #include        "CAN591_PELI_APP.H"
  19          
  20          /*
  21          **********************************************************************************************************
             -**************
  22          **                           函数原型说明
  23          **********************************************************************************************************
             -**************
  24          */
  25          
  26          /*
  27          **********************************************************************************************************
             -**************
  28          **函数原型:  char   SJAEntryResetMode(void)
  29          **参数说明:  无
  30          **返回值:
  31          **           SJA_OK             ; 表示CAN591进入复位模式成功
  32          **           SJA_ENTRYRESET_ERR ; 表示CAN591进入复位模式失败
  33          **
  34          **说明:     该函数用于使591进入复位模式
  35          **********************************************************************************************************
             -**************
  36          */
  37          char   SJAEntryResetMode(void) 
  38          {
  39   1              char                    status=0;
  40   1              unsigned        char            ErrorFlag =1;
  41   1              unsigned        char    ErrorCount = 0x20;                                                      //32次报错
  42   1              while(--ErrorCount){
  43   2                      if((status = SetBitMask(REG_CAN_MOD,RM_RR_BIT)) == 0){  
  44   3                              ErrorFlag =0;
  45   3                              break;
  46   3                      }
  47   2          }
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 2   

  48   1              if(ErrorFlag){
  49   2             status  = SJA_ENTRYRESET_ERR;
  50   2              }
  51   1          return (status);
  52   1      }
  53          
  54          /*
  55          **********************************************************************************************************
             -**************
  56          **函数原型:  char   SJAQuitResetMode(void)
  57          **参数说明:  无
  58          **返回值:
  59          **           SJA_OK             ; 表示CAN591退出复位模式成功
  60          **           SJA_QUITRESET_ERR  ; 表示CAN591退出复位模式失败
  61          **
  62          **说明:     该函数用于使591退出复位模式,进入工作模式
  63          **********************************************************************************************************
             -**************
  64          */
  65          char   SJAQuitResetMode(void)
  66          {
  67   1          char                        status=0;
  68   1              unsigned        char            ErrorFlag =1;
  69   1              unsigned        char    ErrorCount = 0x20;                                                      //32次报错
  70   1              while(--ErrorCount){
  71   2                      if((status=ClearBitMask(REG_CAN_MOD,RM_RR_BIT)) == 0){
  72   3                              ErrorFlag =0;
  73   3                              break;
  74   3                      }
  75   2              }
  76   1              if(ErrorFlag){
  77   2             status  = SJA_QUITRESET_ERR;
  78   2              }
  79   1          return (status);
  80   1      }
  81          
  82          /*
  83          **********************************************************************************************************
             -**************
  84          **函数原型:  char  SetBitMask(unsigned char RegAdr,unsigned char BitValue)
  85          **参数说明:  RegAdr     要设置位的寄存器地址
  86          **           BitValue   要设置的值
  87          **返回值:
  88          **           SJA_OK       ; 表示设置值 成功
  89          **           SJA_INIT_ERR ; 表示设置值 失败
  90          **
  91          **说明:     该函数用于置位591某寄存器的某位
  92          **********************************************************************************************************
             -**************
  93          */
  94          char  SetBitMask(unsigned char RegAdr,unsigned char BitValue)
  95          {
  96   1          char                        status=0;
  97   1          unsigned char   temp;
  98   1          temp = ReadSJAReg(RegAdr)|BitValue;
  99   1          WriteSJAReg(RegAdr,temp);
 100   1          if(ReadSJAReg(RegAdr) == temp){
 101   2              status  =  SJA_OK;
 102   2          }
 103   1          else{
 104   2              status  =  SJA_INIT_ERR ;
 105   2          }
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 3   

 106   1          return (status);
 107   1      }
 108          
 109          /*
 110          **********************************************************************************************************
             -**************
 111          **函数原型:  char  ClearBitMask(unsigned char RegAdr,unsigned char BitValue)
 112          **参数说明:  RegAdr     要清除位的寄存器地址
 113          **           BitValue   要清除的值
 114          **返回值:
 115          **           SJA_OK       ; 表示位清除 成功
 116          **           SJA_INIT_ERR ; 表示位清除 失败
 117          **
 118          **说明:     该函数用于清除591某寄存器的某位
 119          **********************************************************************************************************
             -**************
 120          */
 121          char  ClearBitMask(unsigned char RegAdr,unsigned char BitValue)
 122          {
 123   1          char                        status=0;
 124   1          unsigned char   temp;
 125   1          temp = ReadSJAReg(RegAdr)&(~BitValue);
 126   1          WriteSJAReg(RegAdr,temp);
 127   1          if(ReadSJAReg(RegAdr) == temp){
 128   2              status  =  SJA_OK;
 129   2          }
 130   1          else{
 131   2              status  =  SJA_INIT_ERR ;
 132   2          }
 133   1          return (status);
 134   1      }
 135          
 136          /*
 137          **********************************************************************************************************
             -**************
 138          **函数原型:  char   SJATestRstMode(void)
 139          **参数说明:  无
 140          **返回值:
 141          **           0   ; 表示CAN591处于复位模式
 142          **           1   ; 表示CAN591处于工作模式
 143          **
 144          **说明:     该函数用于测试CAN591 处于复位模式还是工作模式
 145          **********************************************************************************************************
             -**************
 146          */
 147          char   SJATestRstMode(void)
 148          {
 149   1          char    SjaFlag;
 150   1          if((ReadSJAReg(REG_CAN_MOD)&RM_RR_BIT) ==  RM_RR_BIT){
 151   2              SjaFlag  =  0;
 152   2          }
 153   1          else{
 154   2              SjaFlag  = 1 ;
 155   2          }
 156   1          return (SjaFlag);
 157   1      }
 158          
 159          /*
 160          **********************************************************************************************************
             -**************
 161          **函数原型:  char   SJASetCanIne(unsigned char  canint)
 162          **参数说明:  canint   设置中断使能值
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 4   

 163          **返回值:
 164          **           0                            ; 设置中断使能寄存器成功
 165          **                       SJA_SETIER_ERR   ; 设置中断使能寄存器失败
 166          **
 167          **说明:     该函数用于591的CAN中断使能设置
 168          **********************************************************************************************************
             -**************
 169          */
 170          char   SJASetCanIER(unsigned char canint)
 171          {
 172   1          char    SjaFlag;
 173   1          if(WriteSJAReg(REG_CAN_IER,canint)==0)
 174   1              SjaFlag  =  0;
 175   1          else{
 176   2              SjaFlag  = SJA_SETIER_ERR ;
 177   2          }
 178   1          return (SjaFlag);  
 179   1      }
 180          
 181          /*
 182          **********************************************************************************************************
             -**************
 183          **函数原型:  char   SJASetAccMode(unsigned char accmode)
 184          **参数说明:  accmode      代码验收滤波器工作模式
 185          **返回值:
 186          **           0                                ; 设置代码验收滤波器工作模式寄存器成功
 187          **                       SJA_SETACRMODE_ERR       ; 设置代码验收滤波器工作模式寄存器错误
 188          **
 189          **说明:     该函数用于设置591代码验收滤波器工作模式
 190          **********************************************************************************************************
             -**************
 191          */
 192          char   SJASetAccMode(unsigned char accmode)
 193          {
 194   1          char    SjaFlag;
 195   1          if(WriteSJAReg(REG_CAN_ACFMOD,accmode)==0)
 196   1              SjaFlag  =  0;
 197   1          else{
 198   2              SjaFlag  = SJA_SETACFMODE_ERR ;
 199   2          }
 200   1          return (SjaFlag);  
 201   1      }
 202          
 203          /*
 204          **********************************************************************************************************

⌨️ 快捷键说明

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