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

📄 main.lst

📁 基于SJA1000的CAN开发程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 218   3                case  3:
 219   3                      Write_DispBuf(0,0x05,0x0d,0,0);       
 220   3                          break;
 221   3                default:
 222   3                      break;
 223   3              }
 224   2        }
 225   1        else
 226   1        {
 227   2           FunckeyFlag=1;
 228   2           Write_DispBuf(0,0x0a,0x01,0,0);       //a1功能
 229   2               FlightLed3=1;                         //led3闪烁
 230   2        }
 231   1      }
 232          
 233           //检索键处理
 234          static    uchar  data  SearchCount;        //检索计数器
 235          void      SearchKey(void)                  //检索键
 236          {
 237   1        if(FunckeyFlag)
 238   1        {
 239   2          switch(DispBuf[1])
 240   2              {
 241   3            case  0x0a:
C51 COMPILER V7.02a   MAIN                                                                 08/06/2004 10:57:50 PAGE 5   

 242   3                      SearchCount=DispBuf[2];        //检索a功能项  
 243   3                      if(++SearchCount>3)SearchCount=1;
 244   3                              DispBuf[2]=SearchCount;
 245   3                              break;
 246   3                case  0x0b:                           //检索b功能项 
 247   3                      SearchCount=DispBuf[2];         
 248   3                      if(++SearchCount>10)SearchCount=1;
 249   3                              DispBuf[2]=SearchCount;
 250   3                              break;
 251   3                case  0x0c:
 252   3                      
 253   3                default:
 254   3                      break;
 255   3              }
 256   2        }//if结束
 257   1      }
 258          
 259          
 260          //移位键处理
 261          static    bit   MoveFlag=0;            //移位计数    
 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.02a   MAIN                                                                 08/06/2004 10:57:50 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.02a   MAIN                                                                 08/06/2004 10:57:50 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.02a   MAIN                                                                 08/06/2004 10:57:50 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);

⌨️ 快捷键说明

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