📄 sja1000.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 + -