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

📄 can591_pelifunc.lst

📁 can总线通信的以C51庫文件
💻 LST
📖 第 1 页 / 共 3 页
字号:
             -**************
 205          **函数原型:  char   SJASetAccPrio(unsigned char accprio)
 206          **参数说明:  accprio      代码验收滤波器优先级
 207          **返回值:
 208          **           0                                ; 设置代码验收滤波器优先级寄存器成功
 209          **                       SJA_SETACRPRIO_ERR       ; 设置代码验收滤波器优先级寄存器错
 210          **
 211          **说明:     该函数用于设置591代码验收滤波器优先级
 212          **********************************************************************************************************
             -**************
 213          */
 214          char   SJASetAccPrio(unsigned char accprio)
 215          {
 216   1          char    SjaFlag;
 217   1          if(WriteSJAReg(REG_CAN_ACFPRIO,accprio)==0)
 218   1              SjaFlag  =  0;
 219   1          else{
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 5   

 220   2              SjaFlag  = SJA_SETACFPRIO_ERR ;
 221   2          }
 222   1          return (SjaFlag);  
 223   1      }
 224          
 225          /*
 226          **********************************************************************************************************
             -**************
 227          **函数原型:  char   SJASetAccEN(unsigned char accEN)
 228          **参数说明:  accEN      代码验收滤波器使能
 229          **返回值:
 230          **           0                                ; 设置代码验收滤波器使能寄存器成功
 231          **                       SJA_SETACREN_ERR         ; 设置代码验收滤波器使能寄存器错
 232          **
 233          **说明:     该函数用于设置591代码验收滤波器使能
 234          **********************************************************************************************************
             -**************
 235          */
 236          char   SJASetAccEN(unsigned char accEN)
 237          {
 238   1          char    SjaFlag;
 239   1          if(WriteSJAReg(REG_CAN_ACFEN,accEN)==0)
 240   1              SjaFlag  =  0;
 241   1          else{
 242   2              SjaFlag  = SJA_SETACFEN_ERR ;
 243   2          }
 244   1          return (SjaFlag);  
 245   1      }
 246          
 247          /*
 248          **********************************************************************************************************
             -**************
 249          **函数原型:  char       SJASetAccCode(unsigned char  ACF_NUM ,unsigned char    acr0,unsigned char acr1,
 250          **                                                        unsigned char acr2,unsigned char acr3         
 251          **                                                        )
 252          **参数说明:  ACF_NUM    代码验收报文滤波寄存器的组号
 253          **           acr0       0的设定值
 254          **                       acr1   代码验收寄存器1的设定值
 255          **                       acr2   代码验收寄存器2的设定值
 256          **                       acr3   代码验收寄存器3的设定值
 257          **返回值:               
 258          **           0                                ; 设置代码验收寄存器成功
 259          **                       SJA_SETACR_ERR   ; 设置代码验收寄存器错
 260          **                       SJA_NOTRSTMODE       ; 591不在复位模式
 261          **
 262          **说明:     该函数用于设定报文滤波的代码验收滤波器
 263          **********************************************************************************************************
             -**************
 264          */
 265          char    SJASetAccCode(unsigned char  ACF_NUM , unsigned char    acr0,unsigned char acr1,
 266                                            unsigned char acr2,unsigned char acr3         
 267                                            )
 268          {
 269   1              char            status=0;
 270   1              bit                     ErrorFlag=1;
 271   1              unsigned        char    ErrorCount =0x20,tmp;                           //32次,报错
 272   1              if(SJATestRstMode()){                                //处于工作模式
 273   2                      status = SJA_NOTRSTMODE;                        
 274   2              }
 275   1              else{
 276   2                      while(--ErrorCount){
 277   3                              tmp=ACF_NUM;
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 6   

 278   3                  //tmp=0x1f;
 279   3                              WriteSJAReg(tmp,acr0);
 280   3                  //tmp=ReadSJAReg(0x20);
 281   3                  tmp++;
 282   3                              WriteSJAReg(tmp,acr1);
 283   3                  tmp++;
 284   3                              WriteSJAReg(tmp,acr2);
 285   3                  tmp++;
 286   3                              WriteSJAReg(tmp,acr3);
 287   3                              tmp=ACF_NUM;
 288   3                  status=ReadSJAReg(tmp);
 289   3                              if(status != acr0)continue;
 290   3                  tmp++;
 291   3                  status=ReadSJAReg(tmp);
 292   3                              if(status != acr1)continue;
 293   3                  tmp++;
 294   3                  status=ReadSJAReg(tmp);
 295   3                              if(status != acr2)continue;
 296   3                  tmp++;
 297   3                  status=ReadSJAReg(tmp);
 298   3                              if(status != acr3)continue;
 299   3                              ErrorFlag=0;
 300   3                  status=0;
 301   3                              break;
 302   3                      }
 303   2                      if(ErrorFlag){
 304   3                              status =SJA_SETACR_ERR; 
 305   3                      }
 306   2                      return  status;
 307   2              }
 308   1      }
 309          
 310          /*
 311          **********************************************************************************************************
             -**************
 312          **函数原型:  char       SJASetAccMask(unsigned char  ACF_NUM , unsigned char    amr0,unsigned char amr1,
 313          **                                                            unsigned char     amr2,unsigned char amr3         
 314          **                                                            )
 315          **参数说明:  ACF_NUM    代码验收屏蔽寄存器的组号
 316          **           amr0       验收屏蔽寄存器0的设定值
 317          **                       amr1   验收屏蔽寄存器1的设定值
 318          **                       amr2   验收屏蔽寄存器2的设定值
 319          **                       amr3   验收屏蔽寄存器3的设定值
 320          **返回值:               
 321          **           0                                    ; 设置验收屏蔽寄存器成功
 322          **                       SJA_SETAMR_ERR   ; 设置验收屏蔽寄存器错
 323          **                       SJA_NOTRSTMODE           ; 591不在复位模式
 324          **
 325          **说明:     该函数用于设定报文滤波的验收屏蔽寄存器
 326          **********************************************************************************************************
             -**************
 327          */
 328          char    SJASetAccMask(unsigned char  ACF_NUM , unsigned char    amr0,unsigned char amr1,
 329                                                unsigned char     amr2,unsigned char amr3         
 330                                                )
 331          {
 332   1              char            status=0;
 333   1              bit                     ErrorFlag=1;
 334   1              unsigned        char    ErrorCount =0x20,TMP;                           //32次,报错
 335   1              if(SJATestRstMode()){                                //处于工作模式
 336   2                      status = SJA_NOTRSTMODE;                        
 337   2              }
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 7   

 338   1              else{
 339   2                      while(--ErrorCount){
 340   3                              TMP=ACF_NUM;
 341   3                              WriteSJAReg(TMP,amr0);
 342   3                              TMP++;
 343   3                              WriteSJAReg(TMP,amr1);
 344   3                              TMP++;
 345   3                              WriteSJAReg(TMP,amr2);
 346   3                              TMP++;
 347   3                              WriteSJAReg(TMP,amr3);
 348   3                              TMP=ACF_NUM;
 349   3                  status=ReadSJAReg(TMP);
 350   3                              if(status != amr0)continue;
 351   3                              TMP++;
 352   3                              status=ReadSJAReg(TMP);
 353   3                              if(status != amr1)continue;
 354   3                              TMP++;
 355   3                  status=ReadSJAReg(TMP);
 356   3                              if(status != amr2)continue;
 357   3                              TMP++;
 358   3                  status=ReadSJAReg(TMP);
 359   3                              if(status != amr3)continue;
 360   3                              ErrorFlag=0;
 361   3                  status=0;
 362   3                              break;
 363   3                      }
 364   2                      if(ErrorFlag){
 365   3                              status =SJA_SETAMR_ERR; 
 366   3                      }
 367   2                      return  status;
 368   2              }
 369   1      }
 370          /*
 371          **********************************************************************************************************
             -**************
 372          **函数原型:  char       SJASetBandRateStandard(unsigned char    BandRateSize)
 373          **参数说明:  BandRateSize                 标准常用波特率(Kbps)          
 374          **                              0                                       5
 375          **                              1                                       10
 376          **                              2                                       20
 377          **                              3                                       40
 378          **                              4                                       50
 379          **                              5                                       80
 380          **                              6                                       100
 381          **                              7                                       125
 382          **                              8                                       200
 383          **                              9                                       250
 384          **                              10                                      400
 385          **                              11                                      500
 386          **                              12                                      666
 387          **                              13                                      800
 388          **                              14                                      1000              
 389          **返回值:               
 390          **           0                                    ; 设置总线定时器成功
 391          **                       SJA_SETBTR_ERR           ; 设置总线定时器错
 392          **                       SJA_NOBTRSIZE            ;波特率不能设为此值
 393          **
 394          **说明:     该函数用于设定在系统晶体为12MHZ时,常用的标准波特率的值。
 395          **                      参数BandRateSize只能为0~14,其它的值会返回SJA_NOBTRSIZE错误
 396          **                      本函数只能用于复位模式
 397          **********************************************************************************************************
             -**************
C51 COMPILER V7.01  CAN591_PELIFUNC                                                        04/10/2003 14:04:02 PAGE 8   

 398          */
 399          unsigned  char  code    SJA_BTR_CODETAB[]={
 400                  0xbf,0xff,                                              //;5KBPS的预设值
 401                  0xef,0xff,                                              //;10KBPS的预设值1
 402              0xd7,0xff,                         //;20KBPS的预设值1
 403              0xcb,0xFF,                     //;40KBPS的预设值1
 404              0x47,0x2F,                     //;50KBPS的预设值
 405              0xc5,0xFF,                     //;80KBPS的预设值1
 406              0xc9,0xa7,                     //;100KBPS的预设值1
 407              0x45,0x2B,                     //;125KBPS的预设值1
 408              0x04,0xa7,                     //;200KBPS的预设值1
 409              0x01,0x1c,                     //;250KBPS的预设值
 410              0x02,0x25,                     //;400KBPS的预设值1
 411              0x01,0x45,                     //;500KBPS的预设值1
 412              0x80,0xb6,                     //;666KBPS的预设值
 413              0x00,0x16,                     //;800KBPS的预设值
 414              0x01,0x12                      //;1000KBPS的预设值1
 415            };
 416          
 417          char    SJASetBandRateStandard(unsigned char    BandRateSize)
 418          {
 419   1              char    status=0;
 420   1              bit             ErrorFlag =1;           
 421   1              unsigned        char    ErrorCount = 0x20;                              //32次报错
 422   1              if(BandRateSize>14){
 423   2                      status = SJA_NOBTRSIZE;
 424   2              }
 425   1          else{

⌨️ 快捷键说明

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