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