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

📄 sja_bcanfunc.lst

📁 电梯控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   SJA_BCANFUNC                                                          02/23/2006 10:58:24 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SJA_BCANFUNC
OBJECT MODULE PLACED IN SJA_BCANFUNC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe SJA_BCANFUNC.c DB OE SMALL ROM(LARGE)

line 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          #include <REG51.H>
  17          unsigned        char       xdata  *SJA_BCANAdr;         //add by ji, move from SJA_BCANCONF.H
  18          extern  unsigned char floor;
  19          //sbit P3_4=P3^4;                       //UP_LED
  20          //sbit P3_5=P3^5;       
  21          /************************************************************************
  22           *以下为基本的函数说明(BasicCAN)                                       *
  23           ************************************************************************/
  24          
  25          /************************************************************************
  26           *函数原型:  bit   BCAN_CREATE_COMMUNATION(void)                        * 
  27           *参数说明:  无                                                         *
  28           *返回值:                                                               *
  29           *           0 ; 表示SJA1000接口正常                                    *
  30           *           1 ; 表示SJA1000与处理器接口不正常                          *
  31           *                                                                      * 
  32           *说明:该函数用于检测CAN控制器的接口是否正常                            *
  33           ************************************************************************/
  34           bit   BCAN_CREATE_COMMUNATION(void)
  35           {  
  36   1          SJA_BCANAdr=REG_TEST;                     //访问测试寄存器            
  37   1          
  38   1          *SJA_BCANAdr   =0xaa;                     //写入测试值
  39   1          if(*SJA_BCANAdr == 0xaa)
  40   1          {
  41   2              return    0;                          //读测试正确
  42   2          }
  43   1          else
  44   1          {    
  45   2             return    1;
  46   2          } 
  47   1       }       
  48          
  49          /************************************************************************
  50           *函数原型:      bit   BCAN_ENTER_RETMODEL(void)                        *
  51           *参数说明:  无                                                         *
  52           *返回值:                                                               *
  53           *           0 ; 表示成功进入复位工作模式                               *
C51 COMPILER V7.20   SJA_BCANFUNC                                                          02/23/2006 10:58:24 PAGE 2   

  54           *           1 ; 表示不能进入复位工作模式                               *
  55           *                                                                      * 
  56           *说明:      CAN控制器进入复位工作模式                                  *
  57           ************************************************************************/ 
  58           bit   BCAN_ENTER_RETMODEL(void)
  59           {
  60   1          unsigned   char   TempData;
  61   1          SJA_BCANAdr  = REG_CONTROL;                   //访问地址指向控制寄存器 
  62   1          TempData=  *SJA_BCANAdr;                      //保存原始值
  63   1          *SJA_BCANAdr=(TempData|0x01);                 //置位复位请求
  64   1          if((*SJA_BCANAdr&0x01) == 1)
  65   1          {
  66   2             return   0;
  67   2          }
  68   1          else
  69   1          {
  70   2             return   1;
  71   2          }
  72   1          
  73   1       }
  74          
  75          /************************************************************************
  76           *函数原型:      bit   BCAN_QUIT_RETMODEL(void)                         *
  77           *参数说明:  无                                                         *
  78           *返回值:                                                               *
  79           *           0 ; 表示成功退出复位工作模式                               *
  80           *           1 ; 表示不能退出复位工作模式                               *
  81           *                                                                      * 
  82           *说明:      CAN控制器退出复位工作模式                                  *
  83           ************************************************************************/ 
  84           bit   BCAN_QUIT_RETMODEL(void)
  85           {
  86   1          unsigned   char   TempData;
  87   1          SJA_BCANAdr = REG_CONTROL;                   //访问地址指向控制寄存器 
  88   1          TempData    = *SJA_BCANAdr;                  //保存原始值
  89   1          *SJA_BCANAdr=(TempData&0xfe);                        //清除复位请求
  90   1          if((*SJA_BCANAdr&0x01) == 0)
  91   1          {
  92   2             return   0;                               //
  93   2          }
  94   1          else
  95   1          {
  96   2             return   1;                              //退出成功
  97   2          }
  98   1      
  99   1       }
 100          /*
 101          **********************************************************************************************************
             -**************
 102          **函数原型:  char       SJASetBandRateStandard(unsigned char    BandRateSize)
 103          **参数说明:  BandRateSize                 标准常用波特率(Kbps)          
 104          **                              0                                       5
 105          **                              1                                       10
 106          **                              2                                       20
 107          **                              3                                       40
 108          **                              4                                       50
 109          **                              5                                       80
 110          **                              6                                       100
 111          **                              7                                       125
 112          **                              8                                       200
 113          **                              9                                       250
 114          **                              10                                      400
C51 COMPILER V7.20   SJA_BCANFUNC                                                          02/23/2006 10:58:24 PAGE 3   

 115          **                              11                                      500
 116          **                              12                                      666
 117          **                              13                                      800
 118          **                              14                                      1000              
 119          **返回值:               
 120          **           0                                    ; 设置总线定时器成功
 121          **                       SJA_SETBTR_ERR           ; 设置总线定时器错
 122          **                       SJA_NOBTRSIZE            ;波特率不能设为此值
 123          **
 124          **说明:     该函数用于设定在系统晶体为16MHZ时,常用的标准波特率的值。
 125          **                      参数BandRateSize只能为0~14,其它的值会返回SJA_NOBTRSIZE错误
 126          **                      本函数只能用于复位模式
 127          **********************************************************************************************************
             -**************
 128          */
 129          unsigned  char  code    SJA_BTR_CODETAB[]={
 130                  0xbf,0xff,                                              //;5KBPS的预设值
 131                  0x67,0x2f,                                              //;10KBPS的预设值
 132              0x53,0x2F,                         //;20KBPS的预设值
 133              0x87,0xFF,                     //;40KBPS的预设值
 134              0x47,0x2F,                     //;50KBPS的预设值
 135              0x83,0xFF,                     //;80KBPS的预设值
 136              0x43,0x2f,                     //;100KBPS的预设值
 137              0x03,0x1c,                     //;125KBPS的预设值
 138              0x81,0xfa,                     //;200KBPS的预设值
 139              0x01,0x1c,                     //;250KBPS的预设值
 140              0x80,0xfa,                     //;400KBPS的预设值
 141              0x00,0x1c,                     //;500KBPS的预设值
 142              0x80,0xb6,                     //;666KBPS的预设值
 143              0x00,0x16,                     //;800KBPS的预设值
 144              0x40,0x14                      //;1000KBPS的预设值
 145            };
 146          bit     BCAN_SET_BANDRATE(unsigned char CAN_ByteRate)
 147          {
 148   1              
 149   1              bit             ErrorFlag =1;           
 150   1              unsigned        char    ErrorCount = 0x20;                              //32次报错

⌨️ 快捷键说明

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