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

📄 main.lst

📁 总线测试程序源代码 C语言编程 基于51单片机
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -