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

📄 sja_pelican.lst

📁 参考周立功的basic模式的CAN通讯
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   SJA_PELICAN                                                           05/16/2006 10:19:37 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SJA_PELICAN
OBJECT MODULE PLACED IN SJA_PeliCan.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE SJA_PeliCan.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //----------------------------------------------------------------------
   2          // FileName   : SJA_PeliCan.c
   3          // Description: PeliCan 功能实现文件
   4          // DateTime   : 2006-05-11 Create
   5          // Author     : jztx-liuweiming
   6          // Version    : TxCmsPrj Ver1.0
   7          //----------------------------------------------------------------------
   8          // SJA1000, 16M晶振 PeliCan模式, 2006年5月11日开始调试, 参考周立功源代码
   9          // 锦州拓新电力电子公司 刘伟明
  10          //----------------------------------------------------------------------
  11          
  12          /************************************************************************
  13          **描述:    独立的CAN 控制器SJA1000基本硬件头文件定义(PeliCAN 工作方式)
  14          **文件名:   SJA_PeliCan.H
  15          **应用语言: KEIL C51
  16          **版本 :    V1.0
  17          **广州周立功单片机发展有限公司 保留所有的版权
  18          *************************************************************************/
  19          
  20          #include    "SJA_PeliCan.H"
*** ERROR C301 IN LINE 50 OF SJA_PeliCan.H: identifier expected
*** ERROR C304 IN LINE 50 OF SJA_PeliCan.H: bad macro parameter list
  21          #include    <string.h>
  22          
  23          /************************************************************************
  24           *以下为基本的函数说明(BasicCAN)                                       *
  25           ************************************************************************/
  26          
  27          /************************************************************************
  28           *函数原型:  bit   PCan_SelfTest(void)                                  * 
  29           *参数说明:  无                                                         *
  30           *返回值:                                                               *
  31           *           0 ; 表示SJA1000接口正常                                    *
  32           *           1 ; 表示SJA1000与处理器接口不正常                          *
  33           *                                                                      * 
  34           *说明: 该函数用于检测CAN控制器的接口是否正常                           *
  35           ************************************************************************/
  36           bit   PCan_SelfTest(void)
  37           {  
  38   1          Sja_PeliCan  = REG_TEST;                //访问测试寄存器          
*** ERROR C202 IN LINE 38 OF SJA_PELICAN.C: 'REG_TEST': undefined identifier
  39   1          *Sja_PeliCan = 0xAA;                    //写入测试值
  40   1          if ( *Sja_PeliCan == 0xAA )
  41   1          {
  42   2            return    0;                           //读测试正确
  43   2          }
  44   1          else
  45   1          {    
  46   2            return    1;
  47   2          } 
  48   1       }      
  49          
  50           /************************************************************************
  51           *函数原型:  bit   PCan_Select_PeliModel(void)                           *
  52           *参数说明:  无                                                          *
C51 COMPILER V7.06   SJA_PELICAN                                                           05/16/2006 10:19:37 PAGE 2   

  53           *返回值:                                                                *
  54           *           0 ; 表示成功选择Peli模式                                    *
  55           *           1 ; 表示不能选择Peli模式                                    *
  56           *                                                                       *
  57           *说明:      CAN控制器选择Peli模式                                       *
  58           ************************************************************************/ 
  59           bit   PCan_Set_CDR(unsigned char PCan_CDR)
  60           {
  61   1          unsigned   char   TempData;
  62   1          Sja_PeliCan  = REG_CDR;                   //访问地址指向控制寄存器 
*** ERROR C202 IN LINE 62 OF SJA_PELICAN.C: 'REG_CDR': undefined identifier
  63   1          TempData     = *Sja_PeliCan;              //保存原始值
  64   1          *Sja_PeliCan = (TempData | PCan_CDR);     //置位复位请求
  65   1          if ( (*Sja_PeliCan&PCan_CDR) == 1 )
  66   1          {
  67   2            return   0;
  68   2          }
  69   1          else
  70   1          {
  71   2            return   1;
  72   2          }
  73   1       }
  74          
  75          /************************************************************************
  76           *函数原型:      bit   PCan_Enter_RstModel(void)                        *
  77           *参数说明:  无                                                         *
  78           *返回值:                                                               *
  79           *           0 ; 表示成功进入复位工作模式                               *
  80           *           1 ; 表示不能进入复位工作模式                               *
  81           *                                                                      * 
  82           *说明:      CAN控制器进入复位工作模式                                  *
  83           ************************************************************************/ 
  84           bit   PCan_Enter_RstModel(void)
  85           {
  86   1          unsigned   char   TempData;
  87   1          Sja_PeliCan  = REG_CONTROL;                   //访问地址指向控制寄存器 
*** ERROR C202 IN LINE 87 OF SJA_PELICAN.C: 'REG_CONTROL': undefined identifier
  88   1          TempData     = *Sja_PeliCan;                  //保存原始值
  89   1          *Sja_PeliCan = (TempData | 0x01);             //置位复位请求
  90   1          if ( (*Sja_PeliCan&0x01) == 1 )
  91   1          {
  92   2            return   0;
  93   2          }
  94   1          else
  95   1          {
  96   2            return   1;
  97   2          }
  98   1       }
  99          
 100          /************************************************************************
 101           *函数原型:      bit   PCan_Quit_RstModel(void)                         *
 102           *参数说明:  无                                                         *
 103           *返回值:                                                               *
 104           *           0 ; 表示成功退出复位工作模式                               *
 105           *           1 ; 表示不能退出复位工作模式                               *
 106           *                                                                      * 
 107           *说明:      CAN控制器退出复位工作模式                                  *
 108           ************************************************************************/ 
 109           bit   PCan_Quit_RstModel(void)
 110           {
 111   1          unsigned   char   TempData;
 112   1          Sja_PeliCan  = REG_CONTROL;                  //访问地址指向控制寄存器 
C51 COMPILER V7.06   SJA_PELICAN                                                           05/16/2006 10:19:37 PAGE 3   

*** ERROR C202 IN LINE 112 OF SJA_PELICAN.C: 'REG_CONTROL': undefined identifier
 113   1          TempData     = *Sja_PeliCan;                 //保存原始值
 114   1          *Sja_PeliCan = (TempData & 0xfe);                //清除复位请求
 115   1          if ( (*Sja_PeliCan&0x01) == 0 )
 116   1          {
 117   2            return   0;                                //退出成功
 118   2          }
 119   1          else
 120   1          {
 121   2            return   1;                                //退出失败
 122   2          }
 123   1       }
 124          
 125          /************************************************************************
 126          ;*函数原型:   bit  PCan_Set_BandRateE(unsigned char CAN_ByteRate)       *
 127          ;*参数说明:  CAN_ByteRate  波特率(Kbit/s) BTR0     BTR1               *
 128          ;*           0              20              053H,    02FH               *
 129          ;*           1              40              087H,    0FFH               *  
 130          ;*           2              50              047H,    02FH               *
 131          ;*           3              80              083H,    0FFH               *
 132          ;*           4              100             043H,    02fH               *
 133          ;*           5              125             03H,     01cH               *
 134          ;*           6              200             081H,    0faH               *
 135          ;*           7              250             01H,     01cH               *
 136          ;*           8              400             080H,    0faH               *
 137          ;*           9              500             00H,     01cH               *
 138          ;*           10             666             080H,    0b6H               *
 139          ;*           11             800             00H,     016H               *
 140          ;*           12             1000            00H,     014H               *
 141          ;*以上设置CAN控制器SJA1000通讯波特率. SJA1000的晶振为必须为16MHZ,       *
 142          ///////////////////////////////////////////////////////////////////////// 
 143          ;*参数说明:  CAN_ByteRate    波特率(Kbit/s) BTR0     BTR1             *
 144          ;*           0              5                 0EFH     0FFH             *
 145          ;*           1              10                0D7H     0FFH             *
 146          ;*           2              20                0CBH     0FFH             *
 147          ;*           3              40                0C5H     0FFH             *
 148          ;*           4              50                0C9H     0A7H             *
 149          ;*           5              80                0C2H     0FFH             *
 150          ;*           6              100               04H      0A7H             *
 151          ;*           7              200               02H      025H             *
 152          ;*           8              250               01H      045H             *
 153          ;*           9              300               01H      025H             *
 154          ;*           10             500               01H      012H             *
 155          ;*           11             600               00H      025H             *
 156          ;*           12             1000              00H      012H             *
 157          ;*                                                                      *
 158          ;*以上设置CAN控制器SJA1000通讯波特率. SJA1000的晶振为必须为12MHZ,       *
 159          ///////////////////////////////////////////////////////////////////////// 
 160          ;*返回值:                                                               *
 161          ;*           0 ;波特率设置成功                                          *
 162          ;*           1 ;波特率设置失败                                          *
 163          ;*                                                                      * 
 164          ;*说明:其它晶体的频率的值的波特率,需自己计算 。该子程序只能用于        *
 165          ;*     复位模式                                                         *  
 166          ;************************************************************************/
 167           
 168          unsigned  char  code    SJA_BTR_CODETAB[]={
 169              0x53,0x2F,                         //;(晶振16MHZ) 20KBPS的预设值
 170              0x87,0xFF,                     //;(晶振16MHZ) 40KBPS的预设值
 171              0x47,0x2F,                     //;(晶振16MHZ) 50KBPS的预设值
 172              0x83,0xFF,                     //;(晶振16MHZ) 80KBPS的预设值

⌨️ 快捷键说明

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