⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 C51 CAN开发测试软件和驱动程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -