?? sja_bcanfunc.lst
字號:
149 1 if(*SJA_BCANAdr != BTR0_num) //校驗寫入值
150 1 {
151 2 return 1;
152 2 }
153 1 SJA_BCANAdr=REG_BTR1; //訪問地址指向總線定時寄存器0
154 1 *SJA_BCANAdr=BTR1_num; //寫入參數
155 1 if(*SJA_BCANAdr != BTR1_num) //校驗寫入值
156 1 {
157 2 return 1;
158 2 }
159 1
160 1 return 0;
161 1 }
162
163
164 /************************************************************************
165 ;*函數原型: BCAN_SET_OBJECT *
166 *參數說明: *
167 * BCAN_ACR:存放驗收代碼寄存器(ACR)的參數設置 *
168 * BCAN_AMR:存放接收屏蔽寄存器(AMR)的參數設置 *
169 ;*返回值: *
170 ;* 0 ;通信對象設置成功 *
171 ;* 1 ;通信對象設置失敗 *
172 ;* *
173 ;*說明:設置CAN節點的通訊對象,允許接收的報文ID號的高8位(D10--D3) 。 *
174 ;* 允許接收的報文,是由AMR和ACR共同決定的. *
175 ;* 滿足以下條件的ID號的報文才可以被接收 *
176 ;*[(ID.10-ID.3)≡(AC.7-AC.0)]||(AM.7-AM.0)≡11111111 *
177 ;* 該子程序只能用于復位模式 *
C51 COMPILER V7.01 SJA_BCANFUNC 04/05/2003 10:31:32 PAGE 4
- *
178 ;************************************************************************/
179 bit BCAN_SET_OBJECT(unsigned char BCAN_ACR,unsigned char BCAN_AMR)
180 {
181 1 SJA_BCANAdr=REG_ACR; //訪問地址指向驗收代碼寄存器(ACR)
182 1 *SJA_BCANAdr=BCAN_ACR; //寫入參數
183 1 if(*SJA_BCANAdr != BCAN_ACR) //校驗寫入值
184 1 {
185 2 return 1;
186 2 }
187 1 SJA_BCANAdr=REG_AMR; //訪問地址指向驗收屏蔽寄存器(AMR)
188 1 *SJA_BCANAdr=BCAN_AMR; //寫入參數
189 1 if(*SJA_BCANAdr != BCAN_AMR) //校驗寫入值
190 1 {
191 2 return 1;
192 2 }
193 1
194 1 return 0;
195 1 }
196
197 /************************************************************************
198 ;*函數原型: bit BCAN_SET_OUTCLK (unsigned char Out_Control, *
199 unsigned char Clock_Out); *
200 ;*參數說明: *
201 * Out_Control:存放輸出控制寄存器 (OC) 的參數設置 *
202 * Clock_Out:存放時鐘分頻寄存器 (CDR) 的參數設置 *
203 * *
204 ;*返回值: *
205 ;* 0 ;設置成功 *
206 ;* 1 ;設置失敗 *
207 ;* *
208 ;*說明:設置SJA1000的輸出模式和時鐘分頻 。該子程序只能用于復位模式 *
- *
209 ;************************************************************************/
210 bit BCAN_SET_OUTCLK (unsigned char Out_Control,
211 unsigned char Clock_Out)
212 {
213 1 SJA_BCANAdr=REG_OCR ; //訪問地址指向輸出控制寄存器
214 1 *SJA_BCANAdr=Out_Control; //寫入參數
215 1 if(*SJA_BCANAdr != Out_Control) //校驗寫入值
216 1 {
217 2 return 1;
218 2 }
219 1 SJA_BCANAdr=REG_CDR; //訪問地址指向輸出控制寄存器
220 1 *SJA_BCANAdr=Clock_Out; //寫入參數
221 1 return 0;
222 1 }
223
224
225 /************************************************************************
226 *函數原型: bit BCAN_HW_INIT(unsigned char BCAN_ACR, *
227 * unsigned char BCAN_AMR, *
228 * unsigned char Bus_Timing0, *
229 * unsigned char Bus_Timing1, *
230 * unsigned char Out_Control, *
231 * unsigned char Clock_Out *
232 * ) *
233 *參數說明: *
234 * BCAN_ACR:存放驗收代碼寄存器(ACR)的參數設置 *
235 * BCAN_AMR:存放接收屏蔽寄存器(AMR)的參數設置 *
236 * Bus_Timing0:存放總線定時0寄存器(BTR0)的參數設置 *
237 * Bus_Timing1:存放總線定時1寄存器(BTR1)的參數設置 *
C51 COMPILER V7.01 SJA_BCANFUNC 04/05/2003 10:31:32 PAGE 5
238 * Out_Control:存放輸出控制寄存器 (OC) 的參數設置 *
239 * Clock_Out:存放時鐘分頻寄存器 (CDR) 的參數設置 *
240 * *
241 *返回值: *
242 * 0 ; 表示初始化成功 *
243 * 1 ; 表示初始化失敗 *
244 * *
245 *說明:CAN控制器的初始化只能在復位模式下才能完成。初始化操作之前請先進入*
246 * 到復位操作模式,并將要初始化的各參數的值按數據手冊中的計算方法,正 *
247 * 確的按實際需要計算好參數后,將參數寫入對應的寄存器 。 *
248 *注: 為了CAN控制器的正確運行,請務必仔細的閱讀SJA1000的數據手冊 *
249 * *
250 *示例:設應用系統中晶體頻率16MHZ,節點只接收ID(標志符)高八位為 *
251 * '10101010'的消息,系統波特率為50Kbit/s,關閉CLKOUT輸出。 *
252 * 則根據數據手冊中的計算方法的各參數如下: *
253 * ACR==0AAH,AMR==00H,BTR0==0C9H,BTR1==0C9H,OC==0FFH,CDR=48H *
254 * 則調用本函數為: *
255 * BCAN_HW_INIT(0xaa,0x00,0xc9,0xc9,0xff,0x48) *
256 ************************************************************************
257 bit BCAN_HW_INIT(unsigned char BCAN_ACR,
258 unsigned char BCAN_AMR,
259 unsigned char Bus_Timing0,
260 unsigned char Bus_Timing1,
261 unsigned char Out_Control,
262 unsigned char Clock_Out
263 )
264 {
265 SJA_BCANAdr=REG_ACR; //訪問地址指向驗收代碼寄存器(ACR)
266 *SJA_BCANAdr=BCAN_ACR; //寫入參數
267 if(*SJA_BCANAdr != BCAN_ACR) //校驗寫入值
268 {
269 return 1;
270 }
271 SJA_BCANAdr=REG_AMR; //訪問地址指向驗收屏蔽寄存器(AMR)
272 *SJA_BCANAdr=BCAN_AMR; //寫入參數
273 if(*SJA_BCANAdr != BCAN_AMR) //校驗寫入值
274 {
275 return 1;
276 }
277 SJA_BCANAdr=REG_BTR0; //訪問地址指向總線定時寄存器0
278 *SJA_BCANAdr=Bus_Timing0; //寫入參數
279 if(*SJA_BCANAdr != Bus_Timing0)//校驗寫入值
280 {
281 return 1;
282 }
283 SJA_BCANAdr=REG_BTR1; //訪問地址指向總線定時寄存器0
284 *SJA_BCANAdr=Bus_Timing1; //寫入參數
285 if(*SJA_BCANAdr != Bus_Timing1)//校驗寫入值
286 {
287 return 1;
288 }
289 SJA_BCANAdr=REG_OCR ; //訪問地址指向輸出控制寄存器
290 *SJA_BCANAdr=Out_Control; //寫入參數
291 if(*SJA_BCANAdr != Out_Control)//校驗寫入值
292 {
293 return 1;
294 }
295 SJA_BCANAdr=REG_CDR; //訪問地址指向輸出控制寄存器
296 *SJA_BCANAdr=Clock_Out; //寫入參數
297 return 0;
298 }
299
C51 COMPILER V7.01 SJA_BCANFUNC 04/05/2003 10:31:32 PAGE 6
300 /************************************************************************
301 *函數原型: bit BCAN_DATA_WRITE(unsigned char *SendDataBuf)*
302 *參數說明: 特定幀各式的數據
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -