📄 sja_bcanfunc.lst
字号:
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 + -