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

📄 sja_bcanfunc.lst

📁 独立的CAN 控制器SJA1000基本硬件头文件定义(BasicCAN 工作方式)
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  SJA_BCANFUNC                                                           04/05/2003 10:31:32 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE SJA_BCANFUNC
OBJECT MODULE PLACED IN SJA_BCANFUNC.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE SJA_BCANFUNC.c REGFILE(.\testcan.ORC) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2          **********************************************************************************************************
             -**********
   3          **描述:    独立的CAN 控制器SJA1000基本硬件头文件定义(BasicCAN 工作方式)
   4          **文件名:   SJA_BcanFunc.H
   5          **应用语言: KEIL C51
   6          **版本 :    V1.0
   7          **广州周立功单片机发展有限公司 保留所有的版权
   8          **********************************************************************************************************
             -**********
   9          */
  10          
  11           /*$page*/
  12          
  13          
  14          #include    "SJA_BCANCONF.H"
  15          #include    <string.h>
  16          
  17          
  18          
  19          
  20          /************************************************************************
  21           *以下为基本的函数说明(BasicCAN)                                       *
  22           ************************************************************************/
  23          
  24          /************************************************************************
  25           *函数原型:  bit   BCAN_CREATE_COMMUNATION(void)                        * 
  26           *参数说明:  无                                                         *
  27           *返回值:                                                               *
  28           *           0 ; 表示SJA1000接口正常                                    *
  29           *           1 ; 表示SJA1000与处理器接口不正常                          *
  30           *                                                                      * 
  31           *说明:该函数用于检测CAN控制器的接口是否正常                            *
  32           ************************************************************************/
  33           bit   BCAN_CREATE_COMMUNATION(void)
  34           {  
  35   1          SJA_BCANAdr=REG_TEST;                     //访问测试寄存器            
  36   1          
  37   1          *SJA_BCANAdr   =0xaa;                     //写入测试值
  38   1          if(*SJA_BCANAdr == 0xaa)
  39   1          {
  40   2              return    0;                          //读测试正确
  41   2          }
  42   1          else
  43   1          {    
  44   2             return    1;
  45   2          } 
  46   1       }       
  47          
  48          /************************************************************************
  49           *函数原型:      bit   BCAN_ENTER_RETMODEL(void)                        *
  50           *参数说明:  无                                                         *
  51           *返回值:                                                               *
  52           *           0 ; 表示成功进入复位工作模式                               *
  53           *           1 ; 表示不能进入复位工作模式                               *
C51 COMPILER V7.01  SJA_BCANFUNC                                                           04/05/2003 10:31:32 PAGE 2   

  54           *                                                                      * 
  55           *说明:      CAN控制器进入复位工作模式                                  *
  56           ************************************************************************/ 
  57           bit   BCAN_ENTER_RETMODEL(void)
  58           {
  59   1          unsigned   char   TempData;
  60   1          SJA_BCANAdr  = REG_CONTROL;                   //访问地址指向控制寄存器 
  61   1          TempData=  *SJA_BCANAdr;                      //保存原始值
  62   1          *SJA_BCANAdr=(TempData|0x01);                 //置位复位请求
  63   1          if((*SJA_BCANAdr&0x01) == 1)
  64   1          {
  65   2             return   0;
  66   2          }
  67   1          else
  68   1          {
  69   2             return   1;
  70   2          }
  71   1          
  72   1       }
  73          
  74          /************************************************************************
  75           *函数原型:      bit   BCAN_QUIT_RETMODEL(void)                         *
  76           *参数说明:  无                                                         *
  77           *返回值:                                                               *
  78           *           0 ; 表示成功退出复位工作模式                               *
  79           *           1 ; 表示不能退出复位工作模式                               *
  80           *                                                                      * 
  81           *说明:      CAN控制器退出复位工作模式                                  *
  82           ************************************************************************/ 
  83           bit   BCAN_QUIT_RETMODEL(void)
  84           {
  85   1          unsigned   char   TempData;
  86   1          SJA_BCANAdr = REG_CONTROL;                   //访问地址指向控制寄存器 
  87   1          TempData    = *SJA_BCANAdr;                  //保存原始值
  88   1          *SJA_BCANAdr=(TempData&0xfe);                        //清除复位请求
  89   1          if((*SJA_BCANAdr&0x01) == 0)
  90   1          {
  91   2             return   0;                               //
  92   2          }
  93   1          else
  94   1          {
  95   2             return   1;                              //退出成功
  96   2          }
  97   1      
  98   1       }
  99          
 100          /************************************************************************
 101          ;*函数原型:   bit   BCAN_SET_BANDRATE(unsigned char CAN_ByteRate)       *
 102          ;*参数说明:  R7            波特率(Kbit/s) BTR0     BTR1               *
 103          ;*           0              20              053H,    02FH                *
 104          ;*           1              40              087H,    0FFH               *  
 105          ;*           2              50              047H,    02FH               *
 106          ;*           3              80              083H,    0FFH                *
 107          ;*           4              100             043H,    02fH                *
 108          ;*           5              125             03H,     01cH                 *
 109          ;*           6              200             081H,    0faH               *
 110          ;*           7              250             01H,     01cH            *
 111          ;*           8              400             080H,    0faH                *
 112          ;*           9              500             00H,     01cH               *
 113          ;*           10             666             080H,    0b6H                 *
 114          ;*           11             800             00H,     016H             *
 115          ;*           12             1000            00H,     014H                  *
C51 COMPILER V7.01  SJA_BCANFUNC                                                           04/05/2003 10:31:32 PAGE 3   

 116          ;*返回值:                                                               *
 117          ;*           0 ;波特率设置成功                                          *
 118          ;*           1 ;波特率设置失败                                          *
 119          ;*                                                                      * 
 120          ;*说明:设置CAN控制器SJA1000通讯波特率.SJA1000的晶振为必须为16MHZ,       *
 121          ;*     其它晶体的频率的值的波特率,需自己计算 。该子程序只能用于        *
 122          ;*     复位模式                                                         *  
 123          ;************************************************************************/
 124          unsigned  char  code    SJA_BTR_CODETAB[]={
 125              0x53,0x2F,                        //   ;20KBPS的预设值
 126              0x87,0xFF,                     //;40KBPS的预设值
 127              0x47,0x2F,                     //;50KBPS的预设值
 128              0x83,0xFF,                     //;80KBPS的预设值
 129              0x43,0x2f,                     //;100KBPS的预设值
 130              0x03,0x1c,                     //;125KBPS的预设值
 131              0x81,0xfa,                     //;200KBPS的预设值
 132              0x01,0x1c,                     //;250KBPS的预设值
 133              0x80,0xfa,                     //;400KBPS的预设值
 134              0x00,0x1c,                     //;500KBPS的预设值
 135              0x80,0xb6,                     //;666KBPS的预设值
 136              0x00,0x16,                     //;800KBPS的预设值
 137              0x00,0x14                     //;1000KBPS的预设值
 138             
 139          };
 140          
 141          bit   BCAN_SET_BANDRATE(unsigned char CAN_ByteRate)
 142          {
 143   1        unsigned  char  BTR0_num,BTR1_num;
 144   1        BTR0_num = SJA_BTR_CODETAB[CAN_ByteRate*2];
 145   1        BTR1_num = SJA_BTR_CODETAB[CAN_ByteRate*2+1];
 146   1        //将波特率的的预设值装入sja1000的总线定时器
 147   1        SJA_BCANAdr=REG_BTR0;                         //访问地址指向总线定时寄存器0
 148   1        *SJA_BCANAdr=BTR0_num;                        //写入参数

⌨️ 快捷键说明

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