📄 main.lst
字号:
166 1 if(BCAN_SET_BANDRATE(BandRateBuf)) //初始化系统默认值波特率100kbps,正确返回0
167 1 {
168 2 status = CAN_INITBTR_ERR ; //返回0XFB
169 2 couter1=4;
170 2 ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
171 2 return(status);
172 2 }
173 1 if(BCAN_SET_OBJECT(0xaa,0x00)) //验收代码及接收屏蔽,ACR=0XAA,AMR=0X00,正确返回0
174 1 {
175 2 status =CAN_INITOBJECT_ERR; //返回0XFC
176 2 couter1=5;
177 2 ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
178 2 return(status);
179 2 }
C51 COMPILER V7.01 MAIN 03/21/2003 10:24:32 PAGE 4
180 1
181 1 if(BCAN_SET_OUTCLK(0xaa,0x48)) //输出模式及分频,写入OCR=0xaa,CDR=0X48,正确返回0
182 1 {
183 2 status =CAN_INITOUTCTL_ERR; //0XFA
184 2 couter1=6;
185 2 ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
186 2 return(status);
187 2 }
188 1 if(BCAN_QUIT_RETMODEL()) //结束复位状态,对00H寄存器0位写0
189 1 {
190 2 status = CAN_QUITRESET_ERR; //0XFD
191 2 couter1=7;
192 2 ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
193 2 return(status);
194 2 }
195 1 SJA_BCANAddress=REG_CONTROL;
196 1 *SJA_BCANAddress=0X1E; //对00H寄存器写0X1E----对溢出、错误、发送、接收中断使能。
197 1 couter1=8;
198 1 ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
199 1 for(couter1=0;couter1<250;couter1++)
200 1 for(couter2=0;couter2<250;couter2++);
201 1 return status; //返回0,表示正常
202 1 }
203
204 //
205 void CanRcv_Prg(void)
206 {
207 1 uchar data status ,couter1;
208 1 if(BCAN_DATA_RECEIVE(buf)) //接收数据
209 1 {
210 2 status=0xe9;
211 2 DispBuf[0]=9;
212 2 ISendStr(0x50,0x30,DispBuf,4);
213 2 }
214 1 else //接收成功
215 1 {
216 2 ISendStr(0x50,0x30,buf,4);
217 2 if(BCAN_CMD_PRG(0x04)); //释放接收缓冲区
218 2 if((buf[1]&0x10)!=0) //是否远程帧
219 2 {
220 3 switch(buf[1]&0x0f)
221 3 { //远程帧处理
222 4 case 0: //请求发送命令字为0c1h的命令帧
223 4 buf[1]=(buf[1]&0xe0)|0x06;
224 4 buf[2]=0xc1;
225 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
226 4 BCAN_CMD_PRG(TR_CMD);
227 4 break;
228 4 case 1:
229 4 buf[1]=(buf[1]&0xe0)|0x06;
230 4 buf[2]=0xc2;
231 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
232 4 BCAN_CMD_PRG(TR_CMD);
233 4 break;
234 4 case 2:
235 4 buf[1]=(buf[1]&0xe0)|0x06;
236 4 buf[2]=0xc3;
237 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
238 4 BCAN_CMD_PRG(TR_CMD);
239 4 break;
240 4 case 3:
241 4 buf[1]=(buf[1]&0xe0)|0x06;
C51 COMPILER V7.01 MAIN 03/21/2003 10:24:32 PAGE 5
242 4 buf[2]=0xc4;
243 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
244 4 BCAN_CMD_PRG(TR_CMD);
245 4 break;
246 4 case 4:
247 4 buf[1]=(buf[1]&0xe0)|0x06;
248 4 buf[2]=0xc5;
249 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
250 4 BCAN_CMD_PRG(TR_CMD);
251 4 break;
252 4 case 5:
253 4 buf[1]=(buf[1]&0xe0)|0x06;
254 4 buf[2]=0xc6;
255 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
256 4 BCAN_CMD_PRG(TR_CMD);
257 4 break;
258 4 case 6:
259 4 case 7:
260 4 case 8:
261 4 case 9:
262 4 default:
263 4 break;
264 4 }
265 3 }
266 2 else
267 2 {
268 3 buf[2]++;
269 3 for(couter1=3;couter1<10;couter1++)
270 3 buf[couter1]=buf[2];
271 3 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
272 3 BCAN_CMD_PRG(TR_CMD);
273 3 } //数据帧
274 2 }
275 1 }
276 //
277 void CanSend_Prg(void) //can发送数据
278 {
279 1 }
280 void CanErr_Prg(void) //发现错误后处理
281 {
282 1 Config_SJA(); //
283 1 }
284 void CanDtOver_Prg(void) //超载处理
285 {
286 1 BCAN_CMD_PRG(COS_CMD);
287 1 }
288 void CanWui_Prg(void) //唤醒中断处理
289 {
290 1
291 1 }
292 void UartRcv_Prg(void) //串口接收到数据处理
293 {
294 1 BCAN_DATA_WRITE(RcvBuf); //将编辑的数据发送到can总线
295 1 BCAN_CMD_PRG(TR_CMD);
296 1 }
297 //自动发送
298 void AutoSendDataToCanBus(void)
299 {
300 1 /* uchar i;
301 1 if((DispBuf[1]==0x05)&&(DispBuf[2]==0x0d))
302 1 {
303 1
C51 COMPILER V7.01 MAIN 03/21/2003 10:24:32 PAGE 6
304 1 if(EditMsSendCount ==0){
305 1 EditMsSendCount = EditMsSendSave;
306 1 SendDataCount++;
307 1 SetSystemBuf[0]++;
308 1 SetSystemBuf[1]=0x08;
309 1 for(i=2;i<10;i++)
310 1 SetSystemBuf[i]=SendDataCount;
311 1 BCAN_DATA_WRITE(SetSystemBuf); //将编辑的数据发送到can总线
312 1 BCAN_CMD_PRG(TR_CMD);
313 1 DispBuf[3]=SendDataCount>>4;
314 1 DispBuf[4]=SendDataCount&0x0f;
315 1 }
316 1 else{
317 1 EditMsSendCount--;
318 1 }
319 1 }*/
320 1 }
321
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1105 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 28 ----
IDATA SIZE = 21 ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -