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