📄 can591_pelifunc.lst
字号:
C51 COMPILER V7.01 CAN591_PELIFUNC 04/10/2003 14:04:02 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE CAN591_PELIFUNC
OBJECT MODULE PLACED IN CAN591_PELIfunc.OBJ
COMPILER INVOKED BY: C:\KEIL_V7\C51\BIN\C51.EXE CAN591_PELIfunc.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 *********************************************************************************************************
-***********
3 *描述: P8XC591CANpelican模式应用函数文件
4 *文件名: CAN591_PELIfunc.C
5 *应用语言: KEIL C51
6 *版本 : V1.0
7 *广州周立功单片机发展有限公司 保留所有的版权
8 *********************************************************************************************************
-***********
9 */
10 #define _SJA_PELICAN_MODE_
11 #define _GLOBAL_CAN591_PELI_APP_
12
13 /*
14 **********************************************************************************************************
-**************
15 ** 导入头文件
16 **********************************************************************************************************
-**************
17 */
18 #include "CAN591_PELI_APP.H"
19
20 /*
21 **********************************************************************************************************
-**************
22 ** 函数原型说明
23 **********************************************************************************************************
-**************
24 */
25
26 /*
27 **********************************************************************************************************
-**************
28 **函数原型: char SJAEntryResetMode(void)
29 **参数说明: 无
30 **返回值:
31 ** SJA_OK ; 表示CAN591进入复位模式成功
32 ** SJA_ENTRYRESET_ERR ; 表示CAN591进入复位模式失败
33 **
34 **说明: 该函数用于使591进入复位模式
35 **********************************************************************************************************
-**************
36 */
37 char SJAEntryResetMode(void)
38 {
39 1 char status=0;
40 1 unsigned char ErrorFlag =1;
41 1 unsigned char ErrorCount = 0x20; //32次报错
42 1 while(--ErrorCount){
43 2 if((status = SetBitMask(REG_CAN_MOD,RM_RR_BIT)) == 0){
44 3 ErrorFlag =0;
45 3 break;
46 3 }
47 2 }
C51 COMPILER V7.01 CAN591_PELIFUNC 04/10/2003 14:04:02 PAGE 2
48 1 if(ErrorFlag){
49 2 status = SJA_ENTRYRESET_ERR;
50 2 }
51 1 return (status);
52 1 }
53
54 /*
55 **********************************************************************************************************
-**************
56 **函数原型: char SJAQuitResetMode(void)
57 **参数说明: 无
58 **返回值:
59 ** SJA_OK ; 表示CAN591退出复位模式成功
60 ** SJA_QUITRESET_ERR ; 表示CAN591退出复位模式失败
61 **
62 **说明: 该函数用于使591退出复位模式,进入工作模式
63 **********************************************************************************************************
-**************
64 */
65 char SJAQuitResetMode(void)
66 {
67 1 char status=0;
68 1 unsigned char ErrorFlag =1;
69 1 unsigned char ErrorCount = 0x20; //32次报错
70 1 while(--ErrorCount){
71 2 if((status=ClearBitMask(REG_CAN_MOD,RM_RR_BIT)) == 0){
72 3 ErrorFlag =0;
73 3 break;
74 3 }
75 2 }
76 1 if(ErrorFlag){
77 2 status = SJA_QUITRESET_ERR;
78 2 }
79 1 return (status);
80 1 }
81
82 /*
83 **********************************************************************************************************
-**************
84 **函数原型: char SetBitMask(unsigned char RegAdr,unsigned char BitValue)
85 **参数说明: RegAdr 要设置位的寄存器地址
86 ** BitValue 要设置的值
87 **返回值:
88 ** SJA_OK ; 表示设置值 成功
89 ** SJA_INIT_ERR ; 表示设置值 失败
90 **
91 **说明: 该函数用于置位591某寄存器的某位
92 **********************************************************************************************************
-**************
93 */
94 char SetBitMask(unsigned char RegAdr,unsigned char BitValue)
95 {
96 1 char status=0;
97 1 unsigned char temp;
98 1 temp = ReadSJAReg(RegAdr)|BitValue;
99 1 WriteSJAReg(RegAdr,temp);
100 1 if(ReadSJAReg(RegAdr) == temp){
101 2 status = SJA_OK;
102 2 }
103 1 else{
104 2 status = SJA_INIT_ERR ;
105 2 }
C51 COMPILER V7.01 CAN591_PELIFUNC 04/10/2003 14:04:02 PAGE 3
106 1 return (status);
107 1 }
108
109 /*
110 **********************************************************************************************************
-**************
111 **函数原型: char ClearBitMask(unsigned char RegAdr,unsigned char BitValue)
112 **参数说明: RegAdr 要清除位的寄存器地址
113 ** BitValue 要清除的值
114 **返回值:
115 ** SJA_OK ; 表示位清除 成功
116 ** SJA_INIT_ERR ; 表示位清除 失败
117 **
118 **说明: 该函数用于清除591某寄存器的某位
119 **********************************************************************************************************
-**************
120 */
121 char ClearBitMask(unsigned char RegAdr,unsigned char BitValue)
122 {
123 1 char status=0;
124 1 unsigned char temp;
125 1 temp = ReadSJAReg(RegAdr)&(~BitValue);
126 1 WriteSJAReg(RegAdr,temp);
127 1 if(ReadSJAReg(RegAdr) == temp){
128 2 status = SJA_OK;
129 2 }
130 1 else{
131 2 status = SJA_INIT_ERR ;
132 2 }
133 1 return (status);
134 1 }
135
136 /*
137 **********************************************************************************************************
-**************
138 **函数原型: char SJATestRstMode(void)
139 **参数说明: 无
140 **返回值:
141 ** 0 ; 表示CAN591处于复位模式
142 ** 1 ; 表示CAN591处于工作模式
143 **
144 **说明: 该函数用于测试CAN591 处于复位模式还是工作模式
145 **********************************************************************************************************
-**************
146 */
147 char SJATestRstMode(void)
148 {
149 1 char SjaFlag;
150 1 if((ReadSJAReg(REG_CAN_MOD)&RM_RR_BIT) == RM_RR_BIT){
151 2 SjaFlag = 0;
152 2 }
153 1 else{
154 2 SjaFlag = 1 ;
155 2 }
156 1 return (SjaFlag);
157 1 }
158
159 /*
160 **********************************************************************************************************
-**************
161 **函数原型: char SJASetCanIne(unsigned char canint)
162 **参数说明: canint 设置中断使能值
C51 COMPILER V7.01 CAN591_PELIFUNC 04/10/2003 14:04:02 PAGE 4
163 **返回值:
164 ** 0 ; 设置中断使能寄存器成功
165 ** SJA_SETIER_ERR ; 设置中断使能寄存器失败
166 **
167 **说明: 该函数用于591的CAN中断使能设置
168 **********************************************************************************************************
-**************
169 */
170 char SJASetCanIER(unsigned char canint)
171 {
172 1 char SjaFlag;
173 1 if(WriteSJAReg(REG_CAN_IER,canint)==0)
174 1 SjaFlag = 0;
175 1 else{
176 2 SjaFlag = SJA_SETIER_ERR ;
177 2 }
178 1 return (SjaFlag);
179 1 }
180
181 /*
182 **********************************************************************************************************
-**************
183 **函数原型: char SJASetAccMode(unsigned char accmode)
184 **参数说明: accmode 代码验收滤波器工作模式
185 **返回值:
186 ** 0 ; 设置代码验收滤波器工作模式寄存器成功
187 ** SJA_SETACRMODE_ERR ; 设置代码验收滤波器工作模式寄存器错误
188 **
189 **说明: 该函数用于设置591代码验收滤波器工作模式
190 **********************************************************************************************************
-**************
191 */
192 char SJASetAccMode(unsigned char accmode)
193 {
194 1 char SjaFlag;
195 1 if(WriteSJAReg(REG_CAN_ACFMOD,accmode)==0)
196 1 SjaFlag = 0;
197 1 else{
198 2 SjaFlag = SJA_SETACFMODE_ERR ;
199 2 }
200 1 return (SjaFlag);
201 1 }
202
203 /*
204 **********************************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -