📄 main.lst
字号:
262 void MoveKey(void) //移位键
263 {
264 1 if(FunckeyFlag)
265 1 {
266 2 MoveFlag=~ MoveFlag; //移位
267 2 if(MoveFlag)
268 2 {FlightLed3=0;ClearLed3=0;
269 3 FlightLed4=1;
270 3 }
271 2 else
272 2 {
273 3 FlightLed3=1;
274 3 FlightLed4=0;ClearLed4=0;
275 3 }
276 2 }
277 1 }
278
279 //增加键处理
280 void IncKey(void) //增加键
281 {
282 1 if(FunckeyFlag)
283 1 {
284 2 if(MoveFlag)
285 2 {
286 3 if(++DispBuf[4]>0x0f)DispBuf[4]=0;
287 3 }
288 2 else
289 2 if(++DispBuf[3]>0x0f)DispBuf[3]=0;
290 2 }
291 1 }
292
293 //退出键处理
294 void QuitKey(void) //退出键
295 {
296 1 if(FunckeyFlag)
297 1 {
298 2 FunckeyFlag=0;
299 2 Disp_Can(); //上电显示CAN1
300 2 DispFlag=0x00;
301 2 }
302 1 }
303
C51 COMPILER V7.01 MAIN 12/06/2003 08:57:11 PAGE 6
304 //确认键处理
305 void EnterKey(void) //确认键
306 {
307 1 uchar Tempdata;
308 1 if(FunckeyFlag)
309 1 {
310 2 Tempdata=GetLedData();
311 2 if(DispBuf[1]==0x0a)
312 2 {
313 3 switch(DispBuf[2])
314 3 {
315 4 case 0x01:
316 4 SetSystemBuf[0]=Tempdata;
317 4 EnterNext();
318 4 break;
319 4 case 0x02:
320 4 SetSystemBuf[1]=Tempdata;
321 4 if(!BCAN_ENTER_RETMODEL())
322 4 {
323 5 BCAN_SET_OBJECT(SetSystemBuf[0],SetSystemBuf[1]);
324 5 BCAN_QUIT_RETMODEL();
325 5 }
326 4 else Error_disp(CAN_ENTRESET_ERR );
327 4
328 4 EnterNext();
329 4 break;
330 4 case 0x03:
331 4 BandRateBuf=Tempdata;
332 4 if(Tempdata>12) Error_disp(NO_BANDRATE_SIZE);
333 4 else{
334 5 if(!BCAN_ENTER_RETMODEL())
335 5 {
336 6 BCAN_SET_BANDRATE(Tempdata);
337 6 BCAN_QUIT_RETMODEL();
338 6 }
339 5 DispBuf[2]=1;
340 5 DispBuf[3]=0;DispBuf[4]=0;
341 5 FlightLed3=1;
342 5 FlightLed4=0;ClearLed4=0;
343 5 }
344 4 break;
345 4 default:
346 4 break;
347 4 }
348 3 }
349 2 if(DispBuf[1]==0x0b)
350 2 {
351 3 if(0<DispBuf[2])
352 3 {
353 4 SetSystemBuf[DispBuf[2]-1]=Tempdata;
354 4
355 4 if(DispBuf[2]==0x0a)
356 4 {
357 5 DispBuf[2]=1;
358 5 DispBuf[3]=0;DispBuf[4]=0;
359 5 FlightLed3=1;
360 5 FlightLed4=0;ClearLed4=0;
361 5 }
362 4 else EnterNext();
363 4 }
364 3 }
365 2 if(DispBuf[1]==0x0c)
C51 COMPILER V7.01 MAIN 12/06/2003 08:57:11 PAGE 7
366 2 {
367 3 switch(DispBuf[2])
368 3 {
369 4 case 1:
370 4 EditMsSendCount =Tempdata;
371 4 EditMsSendSave =Tempdata;
372 4 DispBuf[1]=0x05;
373 4 DispBuf[2]=0x0d;
374 4 FunckeyCount++;
375 4 ClearDispAttr();
376 4 MoveFlag=0;
377 4 break;
378 4 default:
379 4 break;
380 4 }
381 3 }
382 2 }
383 1 }
384
385 //按确认键后进入下一小项处理
386 void EnterNext(void) //按确认键后进入下一小项处理
387 {
388 1 DispBuf[3]=0;DispBuf[4]=0;
389 1 FlightLed3=1;
390 1 FlightLed4=0;ClearLed4=0;
391 1 MoveFlag=0;
392 1 DispBuf[2]++;
393 1 }
394
395 //发送键处理
396 void CanSendKey(void) //发送键
397 {
398 1 if(!FunckeyFlag)
399 1 { BCAN_DATA_WRITE(SetSystemBuf); //将编辑的数据发送到can总线
400 2 BCAN_CMD_PRG(TR_CMD);
401 2 }
402 1 }
403
404 //
405 void InitCPU(void)
406 {
407 1 EA =1;
408 1 IT0 =1;
409 1 EX0 =1;
410 1 PX0 =1;
411 1 InitUart(); //初始化串口
412 1 }
413
414 ////
415 uchar Config_SJA(void)
416 {
417 1 uchar data status=0;
418 1 Delay_50us(100) ;
419 1 TimeOut_Start(20);
420 1 BandRateBuf = ByteRate_1000k;
421 1 BCAN_ENTER_RETMODEL();
422 1 if(BCAN_CREATE_COMMUNATION())//
423 1 {
424 2 status = CAN_INTERFACE_ERR;
425 2 return(status);
426 2 }
427 1 if(BCAN_SET_BANDRATE(BandRateBuf))//初始化系统默认值波特率100kbps
C51 COMPILER V7.01 MAIN 12/06/2003 08:57:11 PAGE 8
428 1 {
429 2 status = CAN_INITBTR_ERR ;
430 2 return(status);
431 2 }
432 1 if(BCAN_SET_OBJECT(0xaa,0x00))
433 1 {
434 2 status =CAN_INITOBJECT_ERR;
435 2 return(status);
436 2 }
437 1
438 1 if(BCAN_SET_OUTCLK(0xaa,0x48))
439 1 {
440 2 status =CAN_INITOUTCTL_ERR;
441 2 return(status);
442 2 }
443 1 if(BCAN_QUIT_RETMODEL())
444 1 {
445 2 status = CAN_QUITRESET_ERR;
446 2 return(status);
447 2 }
448 1
449 1 SJA_BCANAdr=REG_CONTROL;
450 1 *SJA_BCANAdr=0X1E;
451 1
452 1 return status;
453 1 }
454
455 //
456 void CanRcv_Prg(void)
457 {
458 1 uchar data buf[10],status;
459 1 if(BCAN_DATA_RECEIVE(buf)) //接收数据
460 1 {status=0xe9;
461 2 Error_disp(status);
462 2 }
463 1 else
464 1 {
465 2 if(BCAN_CMD_PRG(0x04))
466 2 Error_disp(0xe8);
467 2
468 2 if((buf[1]&0x10)!=0)
469 2 {
470 3 switch(buf[1]&0x0f){ //远程帧处理
471 4 case 0: //请求发送命令字为0c1h的命令帧
472 4 buf[1]=(buf[1]&0xe0)|0x06;
473 4 buf[2]=0xc1;
474 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
475 4 BCAN_CMD_PRG(TR_CMD);
476 4 break;
477 4 case 1:
478 4 buf[1]=(buf[1]&0xe0)|0x06;
479 4 buf[2]=0xc2;
480 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
481 4 BCAN_CMD_PRG(TR_CMD);
482 4 break;
483 4 case 2:
484 4 buf[1]=(buf[1]&0xe0)|0x06;
485 4 buf[2]=0xc3;
486 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
487 4 BCAN_CMD_PRG(TR_CMD);
488 4 break;
489 4 case 3:
C51 COMPILER V7.01 MAIN 12/06/2003 08:57:11 PAGE 9
490 4 buf[1]=(buf[1]&0xe0)|0x06;
491 4 buf[2]=0xc4;
492 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
493 4 BCAN_CMD_PRG(TR_CMD);
494 4 break;
495 4 case 4:
496 4 buf[1]=(buf[1]&0xe0)|0x06;
497 4 buf[2]=0xc5;
498 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
499 4 BCAN_CMD_PRG(TR_CMD);
500 4 break;
501 4 case 5:
502 4 buf[1]=(buf[1]&0xe0)|0x06;
503 4 buf[2]=0xc6;
504 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
505 4 BCAN_CMD_PRG(TR_CMD);
506 4 break;
507 4 case 6:
508 4 case 7:
509 4 case 8:
510 4 case 9:
511 4 default:
512 4 break;
513 4 }
514 3 }
515 2 else
516 2 switch(buf[2])
517 2 {
518 3 case 0xc1: //直通显示
519 3 DrecDisplay(&buf[3]);
520 3 break;
521 3 case 0xc2: //消隐命令
522 3 ClearDispPrg(&buf[3]);
523 3 break;
524 3 case 0xc3: //测试命令
525 3 TestDispPrg();
526 3 break;
527 3 case 0xc4: //左循环命令
528 3 LiftCrcDispPrg(&buf[3]);
529 3 break;
530 3 case 0xc5: //右循环命令
531 3 RightCrcDispPrg(&buf[3]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -