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

📄 main.lst

📁 用于8051
💻 LST
📖 第 1 页 / 共 3 页
字号:
 264          void      MoveKey(void)                //移位键
 265          {
 266   1        if(FunckeyFlag)
 267   1        {
 268   2           MoveFlag=~ MoveFlag;              //移位
 269   2               if(MoveFlag)
 270   2               {FlightLed3=0;ClearLed3=0; 
 271   3                FlightLed4=1;
 272   3               }
 273   2               else
 274   2               {
 275   3            FlightLed3=1;
 276   3                FlightLed4=0;ClearLed4=0; 
 277   3               }
 278   2        }
 279   1      }
 280          
 281          //增加键处理
 282          void      IncKey(void)                  //增加键
 283          {
 284   1         if(FunckeyFlag)
 285   1        {
 286   2          if(MoveFlag)
 287   2              {
 288   3            if(++DispBuf[4]>0x0f)DispBuf[4]=0;
 289   3              }
 290   2          else
 291   2                if(++DispBuf[3]>0x0f)DispBuf[3]=0;
 292   2        }
 293   1      }
 294          
 295          //退出键处理
 296          void      QuitKey(void)                        //退出键
 297          {
 298   1        if(FunckeyFlag)
 299   1        {
 300   2           FunckeyFlag=0;
 301   2           Disp_Can();                               //上电显示CAN1
 302   2               DispFlag=0x00;
 303   2        }
C51 COMPILER V7.50   MAIN                                                                  06/01/2005 14:29:41 PAGE 6   

 304   1      }
 305          
 306          //确认键处理
 307          void      EnterKey(void)                       //确认键
 308          {
 309   1        uchar   Tempdata;
 310   1        if(FunckeyFlag)
 311   1        {
 312   2           Tempdata=GetLedData();
 313   2           if(DispBuf[1]==0x0a)
 314   2               {
 315   3              switch(DispBuf[2])
 316   3                  {
 317   4                 case  0x01:
 318   4                               SetSystemBuf[0]=Tempdata; 
 319   4                                       EnterNext();
 320   4                                       break;
 321   4                         case  0x02:
 322   4                               SetSystemBuf[1]=Tempdata;
 323   4                                       if(!BCAN_ENTER_RETMODEL())
 324   4                                       {
 325   5                             BCAN_SET_OBJECT(SetSystemBuf[0],SetSystemBuf[1]);
 326   5                         BCAN_QUIT_RETMODEL();
 327   5                                        }
 328   4                                        else   Error_disp(CAN_ENTRESET_ERR );
 329   4                                          
 330   4                                       EnterNext();
 331   4                                       break;
 332   4                 case  0x03:
 333   4                               BandRateBuf=Tempdata;
 334   4                                       if(Tempdata>12) Error_disp(NO_BANDRATE_SIZE);
 335   4                                       else{
 336   5                                         if(!BCAN_ENTER_RETMODEL())
 337   5                                         {
 338   6                                               BCAN_SET_BANDRATE(Tempdata);
 339   6                                               BCAN_QUIT_RETMODEL();
 340   6                                         }
 341   5                                         DispBuf[2]=1;
 342   5                         DispBuf[3]=0;DispBuf[4]=0;
 343   5                         FlightLed3=1;
 344   5                         FlightLed4=0;ClearLed4=0;
 345   5                                       }
 346   4                                       break;
 347   4                         default:
 348   4                               break;
 349   4                      }
 350   3               }
 351   2               if(DispBuf[1]==0x0b)
 352   2               {
 353   3             if(0<DispBuf[2])
 354   3                 {
 355   4               SetSystemBuf[DispBuf[2]-1]=Tempdata; 
 356   4                       
 357   4               if(DispBuf[2]==0x0a)
 358   4               { 
 359   5                         DispBuf[2]=1;
 360   5                 DispBuf[3]=0;DispBuf[4]=0;
 361   5                 FlightLed3=1;
 362   5                 FlightLed4=0;ClearLed4=0; 
 363   5                       }
 364   4                       else  EnterNext(); 
 365   4                 }
C51 COMPILER V7.50   MAIN                                                                  06/01/2005 14:29:41 PAGE 7   

 366   3               }
 367   2          if(DispBuf[1]==0x0c)
 368   2              {
 369   3                switch(DispBuf[2])
 370   3                {
 371   4                      case 1:
 372   4                   EditMsSendCount =Tempdata; 
 373   4                               EditMsSendSave  =Tempdata; 
 374   4                               DispBuf[1]=0x05;
 375   4                               DispBuf[2]=0x0d;
 376   4                               FunckeyCount++;
 377   4                               ClearDispAttr();
 378   4                               MoveFlag=0;
 379   4                               break;
 380   4                      default:
 381   4                              break;
 382   4                }
 383   3              }
 384   2        }
 385   1      }
 386          
 387          //按确认键后进入下一小项处理
 388          void      EnterNext(void)                     //按确认键后进入下一小项处理
 389          {
 390   1         DispBuf[3]=0;DispBuf[4]=0;
 391   1         FlightLed3=1;
 392   1         FlightLed4=0;ClearLed4=0;
 393   1         MoveFlag=0;
 394   1         DispBuf[2]++;
 395   1      }
 396          
 397          //发送键处理
 398          void      CanSendKey(void)                                              //发送键
 399          {
 400   1        if(!FunckeyFlag)
 401   1        { BCAN_DATA_WRITE(SetSystemBuf);                              //将编辑的数据发送到can总线
 402   2          BCAN_CMD_PRG(TR_CMD);
 403   2        }
 404   1      }
 405          
 406          //
 407          void  InitCPU(void)
 408          {
 409   1       EA         =1;
 410   1       IT0        =1;
 411   1       EX0        =1;
 412   1       PX0        =1; 
 413   1       InitUart();        //初始化串口 
 414   1      }                                             
 415          
 416          ////
 417          uchar  Config_SJA(void)
 418          { 
 419   1        uchar  data   status=0;
 420   1        Delay_50us(100) ;
 421   1        TimeOut_Start(20);
 422   1        BandRateBuf = ByteRate_1000k;
 423   1        BCAN_ENTER_RETMODEL();
 424   1        if(BCAN_CREATE_COMMUNATION())//
 425   1          {
 426   2          status = CAN_INTERFACE_ERR;
 427   2          return(status);
C51 COMPILER V7.50   MAIN                                                                  06/01/2005 14:29:41 PAGE 8   

 428   2        }
 429   1        if(BCAN_SET_BANDRATE(BandRateBuf))//初始化系统默认值波特率100kbps
 430   1         {
 431   2          status = CAN_INITBTR_ERR ;
 432   2          return(status);
 433   2        }
 434   1        if(BCAN_SET_OBJECT(0xaa,0x00))
 435   1        {
 436   2          status =CAN_INITOBJECT_ERR;
 437   2          return(status);
 438   2        }
 439   1        
 440   1        if(BCAN_SET_OUTCLK(0xaa,0x48))
 441   1        {
 442   2          status =CAN_INITOUTCTL_ERR;
 443   2          return(status);
 444   2        }
 445   1        if(BCAN_QUIT_RETMODEL())
 446   1        {
 447   2          status = CAN_QUITRESET_ERR;
 448   2          return(status);
 449   2        }
 450   1        
 451   1        SJA_BCANAdr=REG_CONTROL;
 452   1        *SJA_BCANAdr=0X1E;
 453   1        
 454   1        return  status; 
 455   1      }
 456          
 457          //
 458          void   CanRcv_Prg(void)
 459          {
 460   1        uchar  data buf[10],status;
 461   1         if(BCAN_DATA_RECEIVE(buf))                                   //接收数据
 462   1         {status=0xe9;
 463   2          Error_disp(status);
 464   2         }
 465   1        else
 466   1        {  
 467   2          if(BCAN_CMD_PRG(0x04))
 468   2            Error_disp(0xe8);
 469   2              
 470   2              if((buf[1]&0x10)!=0)
 471   2              {
 472   3            switch(buf[1]&0x0f){                                              //远程帧处理
 473   4                  case  0:                                                            //请求发送命令字为0c1h的命令帧
 474   4                            buf[1]=(buf[1]&0xe0)|0x06;
 475   4                                buf[2]=0xc1;
 476   4                    BCAN_DATA_WRITE(buf);                             //将编辑的数据发送到can总线
 477   4                    BCAN_CMD_PRG(TR_CMD);
 478   4                                break;
 479   4                      case  1:
 480   4                            buf[1]=(buf[1]&0xe0)|0x06;
 481   4                                buf[2]=0xc2;
 482   4                    BCAN_DATA_WRITE(buf);                             //将编辑的数据发送到can总线
 483   4                    BCAN_CMD_PRG(TR_CMD);
 484   4                                break;
 485   4                      case  2:
 486   4                            buf[1]=(buf[1]&0xe0)|0x06;
 487   4                                buf[2]=0xc3;
 488   4                    BCAN_DATA_WRITE(buf);                             //将编辑的数据发送到can总线
 489   4                    BCAN_CMD_PRG(TR_CMD);
C51 COMPILER V7.50   MAIN                                                                  06/01/2005 14:29:41 PAGE 9   

 490   4                                break;
 491   4              case  3:
 492   4                    buf[1]=(buf[1]&0xe0)|0x06;
 493   4                                buf[2]=0xc4;
 494   4                    BCAN_DATA_WRITE(buf);                             //将编辑的数据发送到can总线
 495   4                    BCAN_CMD_PRG(TR_CMD);
 496   4                                break;        
 497   4                      case  4:
 498   4                            buf[1]=(buf[1]&0xe0)|0x06;
 499   4                                buf[2]=0xc5;
 500   4                    BCAN_DATA_WRITE(buf);                             //将编辑的数据发送到can总线
 501   4                    BCAN_CMD_PRG(TR_CMD);
 502   4                                break;
 503   4                      case  5:
 504   4                            buf[1]=(buf[1]&0xe0)|0x06;
 505   4                                buf[2]=0xc6;
 506   4                    BCAN_DATA_WRITE(buf);                             //将编辑的数据发送到can总线
 507   4                    BCAN_CMD_PRG(TR_CMD);
 508   4                                break;
 509   4                      case  6:
 510   4                      case  7:
 511   4                      case  8:
 512   4                      case  9:
 513   4                      default:
 514   4                            break;
 515   4                }
 516   3              }
 517   2              else
 518   2          switch(buf[2])
 519   2          {
 520   3                case 0xc1:                                                            //直通显示
 521   3                     DrecDisplay(&buf[3]);
 522   3                         break;
 523   3                case 0xc2:                                                            //消隐命令
 524   3                     ClearDispPrg(&buf[3]);
 525   3                         break;
 526   3                case 0xc3:                                                            //测试命令
 527   3                     TestDispPrg();
 528   3                         break;
 529   3                case 0xc4:                                                            //左循环命令
 530   3                     LiftCrcDispPrg(&buf[3]);
 531   3                         break;
 532   3                case 0xc5:                                                            //右循环命令
 533   3                     RightCrcDispPrg(&buf[3]);
 534   3                 break;
 535   3                case 0xc6:                                                            //闪烁

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -