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

📄 sja1000.lst

📁 实现485、232信号到can信号的转换。根据需要调整即可。
💻 LST
字号:
C51 COMPILER V7.06   SJA1000                                                               12/15/2008 11:45:22 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SJA1000
OBJECT MODULE PLACED IN .\SJA1000.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE ..\..\can to can\SJA1000.c BROWSE DEBUG OBJECTEXTEND PRINT(.\
                    -SJA1000.lst) OBJECT(.\SJA1000.obj)

stmt level    source

   1          /********************************************************************************
   2          **描述:    独立的CAN 控制器SJA1000的Pelican功能实现头文件定义
   3          **文件名:   SJA1000.c
   4          *********************************************************************************/
   5          /*
   6                                                                   导入头文件
   7          **********************************************************************************************************
             -***************/
   8          
   9          //#ifdef   _SJA_PELICAN_MODE_
  10          #include <ABSACC.H>
  11          #include <stdio.h>
  12          #include "serial.h"
  13          #include "SJA1000.h"
  14          #include "AT89X52.H"
  15          #include "string.h"
  16          extern unsigned char canbuf[16];
  17          extern unsigned char bCanRcvFlag;
  18          extern unsigned char bDebugFlag1,bDebugFlag2,bDebugFlag3,bDebugFlag4;
  19          //unsigned char   TxBufCan[LenTxBuf],RxBufCan[LenRxBuf];          //CAN收发缓冲区实体
  20          //unsigned char *inTxBufCan,*outTxBufCan,*inRxBufCan,*outRxBufCan;     //CAN收发缓冲区读写指针
  21          /*
  22          ***********************************************************************
  23          *以下为基本的函数实现源代码                                 *
  24          ***********************************************************************
  25          */
  26          /*
  27          ***********************************************************************
  28           *函数原型:  bit   BCAN_CREATE_COMMUNATION(void)                                                * 
  29           *参数说明:  无                                                                                                                 *
  30           *返回值:                                                                                                                               *
  31           *                       0 ; 表示SJA1000接口正常                                                                        *
  32           *                       1 ; 表示SJA1000与处理器接口不正常                                                      *
  33           *                                                                                                                                              * 
  34           *说明:该函数用于检测CAN控制器的接口是否正常                                                    *
  35           ***********************************************************************
  36           */
  37          
  38          //测试内存也是这种方法!写进测试单元,然后读出来!
  39          bit   BCAN_CREATE_COMMUNATION(void)
  40          {
  41   1              bit             Flag;
  42   1              WriteDataToSJA1000(REG_CAN_TEST,0xAA);           //写入测试值
  43   1          if(ReadDataFromSJA1000(REG_CAN_TEST) == 0xaa)
  44   1          {
  45   2              Flag=0;                          //读测试正确
  46   2          }
  47   1          else
  48   1          {    
  49   2             Flag=1;
  50   2          } 
  51   1              if(!Flag)
  52   1              {
  53   2                      WriteDataToSJA1000(REG_CAN_TEST, 0x55);          //写入测试值
C51 COMPILER V7.06   SJA1000                                                               12/15/2008 11:45:22 PAGE 2   

  54   2                      if(ReadDataFromSJA1000(REG_CAN_TEST) == 0x55)
  55   2                      {
  56   3                              Flag=0;                                                  //读测试正确
  57   3                              WriteDataToSJA1000(REG_CAN_TEST, 0x00);
  58   3                      }
  59   2                      else
  60   2                      {        
  61   3                         Flag=1;
  62   3                      } 
  63   2      
  64   2              }
  65   1              return (Flag);
  66   1      }
  67          
  68          
  69          
  70          /*
  71          ***********************************************************************
  72           *函数原型:      bit   BCAN_ENTRY_RETMODEL(void)                         *
  73           *参数说明:  无                                                         *
  74           *返回值:                                                               *
  75           *           0 ; 表示成功进入复位工作模式                               *
  76           *           1 ; 表示不能进入复位工作模式                               *
  77           *                                                                      * 
  78           *说明:      CAN控制器进入复位工作模式                                  *
  79           ***********************************************************************
  80           */ 
  81          bit   BCAN_ENTRY_RETMODEL(void)
  82          {
  83   1              bit             flag;
  84   1              unsigned   char         ErrorCount=20;
  85   1          unsigned   char     TempData=ReadDataFromSJA1000(REG_CAN_MOD); 
  86   1                                             
  87   1              while(ErrorCount --)
  88   1              {
  89   2                      WriteDataToSJA1000(REG_CAN_MOD,TempData|0x09);     //MOD.7是 保留位
  90   2                                                                 //MOD.4=1,睡眠;没有CAN中断等待和总线活动时,CAN

⌨️ 快捷键说明

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