📄 main.lst
字号:
506 1 }
507
508 //按确认键后进入下一小项处理
509 void EnterNext(void)
510 {
511 1 unsigned char i;
512 1 FlightLed3=1;
513 1 FlightLed4=0;ClearLed4=0;
514 1 MoveFlag=0;
515 1 i=ReadSjaReg(REG_TxBuffer1+DispBuf[2]);
516 1 DispBuf[2]++;
517 1 DispBuf[3]=i>>4;
518 1 DispBuf[4]=i&0x0f;
519 1 }
520
521 //发送键处理
522 void CanSendKey(void) //发送键
523 {
524 1 if((ReadSjaReg(REG_CONTROL)&0x01)==0)
525 1 {
526 2 BCAN_CMD_PRG(TR_CMD);
527 2 }
528 1 else
529 1 {
530 2 Write_DispBuf(0,0x0E,0x12,0x0f,0x0d);//在复位模式
531 2 }
532 1 }
533
534 //
535 void InitCPU(void)
536 {
537 1 EA =1;
538 1 IT0 =1;
539 1 EX0 =1;
540 1 PX0 =1;
541 1 InitUart(); //初始化串口
542 1 }
543
544 ////
545 uchar Config_SJA(void)
546 {
547 1 uchar data status=0;
548 1 Delay_50us(100) ;
549 1 TimeOut_Start(20);
550 1 BandRateBuf = ByteRate_1000k;
551 1 BCAN_ENTER_RETMODEL();
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 10
552 1 if(BCAN_CREATE_COMMUNATION())//
553 1 {
554 2 status = CAN_INTERFACE_ERR;
555 2 return(status);
556 2 }
557 1 if(BCAN_SET_BANDRATE(BandRateBuf))//初始化系统默认值波特率1000kbps
558 1 {
559 2 status = CAN_INITBTR_ERR ;
560 2 return(status);
561 2 }
562 1 if(BCAN_SET_OBJECT(0xaa,0xff))
563 1 {
564 2 status =CAN_INITOBJECT_ERR;
565 2 return(status);
566 2 }
567 1
568 1 if(BCAN_SET_OUTCLK(0xaa,0x48))
569 1 {
570 2 status =CAN_INITOUTCTL_ERR;
571 2 return(status);
572 2 }
573 1 if(BCAN_QUIT_RETMODEL())
574 1 {
575 2 status = CAN_QUITRESET_ERR;
576 2 return(status);
577 2 }
578 1
579 1 SJA_BCANAdr=REG_CONTROL;
580 1 *SJA_BCANAdr=0X1E;
581 1
582 1 return status;
583 1 }
584
585 //
586 void CanRcv_Prg(void)
587 {
588 1 uchar data buf[10],status;
589 1 if(BCAN_DATA_RECEIVE(buf)) //接收数据
590 1 {status=0xe9;
591 2 Error_disp(status);
592 2 }
593 1 else
594 1 {
595 2 if(BCAN_CMD_PRG(0x04))
596 2 Error_disp(0xe8);
597 2
598 2 if((buf[1]&0x10)!=0)
599 2 {
600 3 switch(buf[1]&0x0f){ //远程帧处理
601 4 case 0: //请求发送命令字为0c1h的命令帧
602 4 buf[1]=(buf[1]&0xe0)|0x06;
603 4 buf[2]=0xc1;
604 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
605 4 BCAN_CMD_PRG(TR_CMD);
606 4 break;
607 4 case 1:
608 4 buf[1]=(buf[1]&0xe0)|0x06;
609 4 buf[2]=0xc2;
610 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
611 4 BCAN_CMD_PRG(TR_CMD);
612 4 break;
613 4 case 2:
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 11
614 4 buf[1]=(buf[1]&0xe0)|0x06;
615 4 buf[2]=0xc3;
616 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
617 4 BCAN_CMD_PRG(TR_CMD);
618 4 break;
619 4 case 3:
620 4 buf[1]=(buf[1]&0xe0)|0x06;
621 4 buf[2]=0xc4;
622 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
623 4 BCAN_CMD_PRG(TR_CMD);
624 4 break;
625 4 case 4:
626 4 buf[1]=(buf[1]&0xe0)|0x06;
627 4 buf[2]=0xc5;
628 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
629 4 BCAN_CMD_PRG(TR_CMD);
630 4 break;
631 4 case 5:
632 4 buf[1]=(buf[1]&0xe0)|0x06;
633 4 buf[2]=0xc6;
634 4 BCAN_DATA_WRITE(buf); //将编辑的数据发送到can总线
635 4 BCAN_CMD_PRG(TR_CMD);
636 4 break;
637 4 case 6:
638 4 case 7:
639 4 case 8:
640 4 case 9:
641 4 default:
642 4 break;
643 4 }
644 3 }
645 2 else
646 2 switch(buf[2])
647 2 {
648 3 case 0xc1: //直通显示
649 3 DrecDisplay(&buf[3]);
650 3 break;
651 3 case 0xc2: //消隐命令
652 3 ClearDispPrg(&buf[3]);
653 3 break;
654 3 case 0xc3: //测试命令
655 3 TestDispPrg();
656 3 break;
657 3 case 0xc4: //左循环命令
658 3 LiftCrcDispPrg(&buf[3]);
659 3 break;
660 3 case 0xc5: //右循环命令
661 3 RightCrcDispPrg(&buf[3]);
662 3 break;
663 3 case 0xc6: //闪烁
664 3 FlightDispPrg(&buf[3]);
665 3 break;
666 3 case 0xc9: //改变总线波特率命令
667 3 default:
668 3 break;
669 3 }
670 2 }
671 1 }
672
673 //
674 void DrecDisplay(uchar *databuf) //直通显示
675 {
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 12
676 1 ClearDispAttr();
677 1 memcpy(&DispBuf[1],&databuf[1],4);
678 1 switch(databuf[0])
679 1 {
680 2 case 0:
681 2 DispFlag|=0xe0;
682 2 break;
683 2 case 1:
684 2 DispFlag|=0xd0;
685 2 break;
686 2 case 2:
687 2 DispFlag|=0xb0;
688 2 break;
689 2 case 3:
690 2 DispFlag|=0x70;
691 2 break;
692 2 case 4:
693 2 DispFlag|=0xc0;
694 2 break;
695 2 case 5:
696 2 DispFlag|=0xa0;
697 2 break;
698 2 case 6:
699 2 DispFlag|=0x60;
700 2 break;
701 2 case 7:
702 2 DispFlag|=0x90;
703 2 break;
704 2 case 8:
705 2 DispFlag|=0x50;
706 2 break;
707 2 case 9:
708 2 DispFlag|=0x30;
709 2 break;
710 2 case 10:
711 2 DispFlag|=0x80;
712 2 break;
713 2 case 11:
714 2 DispFlag|=0x40;
715 2 break;
716 2 case 12:
717 2 DispFlag|=0x10;
718 2 break;
719 2 case 13:
720 2 DispFlag|=0x20;
721 2 break;
722 2 case 14:
723 2 DispFlag=0;
724 2 break;
725 2 default:
726 2 break;
727 2 }
728 1
729 1 }
730
731 //测试处理函数
732 void TestDispPrg(void) //测试处理函数
733 {
734 1 uchar i;
735 1 DispFlag=0;
736 1 DispFlag|=0x0f;
737 1 for(i=1;i<5;i++) DispBuf[i]=0x08;
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 13
738 1
739 1 }
740 //消隐处理函数
741 void ClearDispPrg(uchar *databuf) //消隐处理函数
742 {
743 1 ClearDispAttr();
744 1 memcpy(&DispBuf[1],&databuf[1],4);
745 1 DispFlag=0;
746 1 switch(databuf[0])
747 1 {
748 2 case 0:
749 2 DispFlag|=0x10;
750 2 break;
751 2 case 1:
752 2 DispFlag|=0x20;
753 2 break;
754 2 case 2:
755 2 DispFlag|=0x40;
756 2 break;
757 2 case 3:
758 2 DispFlag|=0x80;
759 2 break;
760 2 case 4:
761 2 DispFlag|=0x30;
762 2 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -