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

📄 mainn.lst

📁 电梯控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 249   1              SendBuf[0]=(BaseID>>3) &0XFF;
 250   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;              
 251   1              SendBuf[2]=BITFUN       ;
 252   1              SendBuf[3]=((((FormerFloorFireBaseAdd )<<4)+floor)&0xFF);;
 253   1              SendBuf[4]=(((((FormerFloorFireBaseAdd )<<4)+floor)>>8)&0xFF);
 254   1              SendBuf[5]=0x01;
 255   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 256   1              BCAN_DATA_WRITE(SendBuf);
 257   1              BCAN_CMD_PRG(TR_CMD);
 258   1      }
 259          
 260          void LockLadPreSend( void )
 261          {       
 262   1              SendBuf[0]=(BaseID>>3) &0XFF;
 263   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;
 264   1              SendBuf[2]=BITFUN       ;
 265   1              SendBuf[3]=((((FormerFloorLockBaseAdd)<<4)+floor)&0xFF);
 266   1              SendBuf[4]=(((((FormerFloorLockBaseAdd)<<4)+floor)>>8)&0xFF);
 267   1              SendBuf[5]=0x01;
 268   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 269   1              BCAN_DATA_WRITE(SendBuf);
 270   1              BCAN_CMD_PRG(TR_CMD);
 271   1      }
 272          
 273          void UpRunPreSend( void )
 274          {       SendBuf[0]=(BaseID>>3) &0XFF;
 275   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;
 276   1              SendBuf[2]=BITFUN       ;
 277   1              SendBuf[3]=((((FormerFloorUpBaseAdd)<<4)+floor)&0xFF);
 278   1              SendBuf[4]=(((((FormerFloorUpBaseAdd)<<4)+floor)>>8)&0xFF);
 279   1              SendBuf[5]=0x01;
 280   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 281   1              BCAN_DATA_WRITE(SendBuf);
 282   1              BCAN_CMD_PRG(TR_CMD);
 283   1      }
 284          
 285          void DownRunPreSend( void )
 286          {       SendBuf[0]=(BaseID>>3) &0XFF;
 287   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;
 288   1              SendBuf[2]=BITFUN       ;
 289   1              SendBuf[3]=((((FormerFloorDownBaseAdd )<<4)+floor)&0xFF);
 290   1              SendBuf[4]=(((((FormerFloorDownBaseAdd )<<4)+floor)>>8)&0xFF);
 291   1              SendBuf[5]=0x01;
 292   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 293   1              BCAN_DATA_WRITE(SendBuf);
 294   1              BCAN_CMD_PRG(TR_CMD);
 295   1      }                                                
 296                                                                                  
 297          void UpRunRelSend()
 298          {       //P3_4=0;
 299   1              SendBuf[0]=(BaseID>>3) &0XFF;
 300   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;
 301   1              SendBuf[2]=BITFUN       ;
 302   1              SendBuf[3]=((((FormerFloorUpBaseAdd)<<4)+floor)&0xFF);
 303   1              SendBuf[4]=(((((FormerFloorUpBaseAdd)<<4)+floor)>>8)&0xFF);
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 6   

 304   1              SendBuf[5]=0x00;
 305   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 306   1              BCAN_DATA_WRITE(SendBuf);
 307   1              BCAN_CMD_PRG(TR_CMD);
 308   1      }
 309          
 310          void DownRunRelSend()
 311          {
 312   1              SendBuf[0]=(BaseID>>3) &0XFF;
 313   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;
 314   1              SendBuf[2]=BITFUN;
 315   1              SendBuf[3]=((((FormerFloorDownBaseAdd )<<4)+floor)&0xFF);
 316   1              SendBuf[4]=(((((FormerFloorDownBaseAdd )<<4)+floor)>>8)&0xFF);
 317   1              SendBuf[5]=0x00;
 318   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 319   1              BCAN_DATA_WRITE(SendBuf);
 320   1              BCAN_CMD_PRG(TR_CMD);
 321   1      }
 322          
 323          void LockLadRelSend()
 324          {
 325   1              SendBuf[0]=(BaseID>>3) &0XFF;
 326   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;
 327   1              SendBuf[2]=BITFUN;
 328   1              SendBuf[3]=((((FormerFloorLockBaseAdd)<<4)+floor)&0xFF);
 329   1              SendBuf[4]=(((((FormerFloorLockBaseAdd)<<4)+floor)>>8)&0xFF);
 330   1              SendBuf[5]=0x00;
 331   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 332   1              BCAN_DATA_WRITE(SendBuf);
 333   1              BCAN_CMD_PRG(TR_CMD);
 334   1      }
 335          
 336          void FireKeyRelSend()
 337          {
 338   1              SendBuf[0]=(BaseID>>3) &0XFF;
 339   1              SendBuf[1]=((BaseID&0x07)<<5)|DLC;      
 340   1              SendBuf[2]=BITFUN;
 341   1              SendBuf[3]=((((FormerFloorFireBaseAdd)<<4)+floor)&0xFF);
 342   1              SendBuf[4]=(((((FormerFloorFireBaseAdd)<<4)+floor)>>8)&0xFF);
 343   1              SendBuf[5]=0x00;
 344   1      //      (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
 345   1              BCAN_DATA_WRITE(SendBuf);
 346   1              BCAN_CMD_PRG(TR_CMD);
 347   1      }
 348          
 349          InitCPU()
 350          {
 351   1      
 352   1              IT0        =1;
 353   1              EX0        =1;
 354   1              PX0        =1;
 355   1              IE0        =0;
 356   1      
 357   1              TMOD=0X01;
 358   1              TH0=0XF6;
 359   1              TL0=0X3C;
 360   1              EA=1;
 361   1              ET0=1;
 362   1              TR0=1;
 363   1      } 
 364          
 365             void T0_Val( void )  interrupt   1  using  2
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 7   

 366          {       
 367   1              int i;
 368   1              for(i=0;i<4;i++)
 369   1              {
 370   2                      if( (STimerState&(1<<i)) == (1<<i) )
 371   2                      STimerValue[i]++;
 372   2                      
 373   2                      if(  (STimerValue[i]) == 5 )
 374   2                      {                       
 375   3                              InputChanged |= (1<<i);
 376   3                              STimerState = STimerState&(~(1<<i));
 377   3                              STimerValue[i] = 0;
 378   3                              if((InputTemp&(1<<i))==0)
 379   3                                      InputState &= ~(1<<i);
 380   3                              else
 381   3                                      InputState |= (1<<i);                   
 382   3                      }
 383   2              }
 384   1      }
 385          
 386          void CAN(void)  interrupt   0  using  1
 387          {
 388   1              P3_4=0;
 389   1              if((REG_INTERRUPT&0x01) == 0x01)                //接收到数据
 390   1                      CANDataReceived=TRUE;
 391   1              
 392   1      }
 393          main()
 394          { 
 395   1              unsigned char i;
 396   1              Config_SJA();         //CAN初始化,SJA1000配置
 397   1              InitCPU();         //CPU初始化
 398   1              
 399   1              for(;;)
 400   1              {
 401   2                      
 402   2                      for( i=0; i<4; i++ )                    //对4个输入做软件滤波
 403   2                      {       
 404   3                              if( (InputTemp&(1<<i)) != (P1&(1<<i)) )                 //是否有输入信号
 405   3                              {       //P3_4=0;
 406   4                                      if((P1&(1<<i))==0)
 407   4                                              InputTemp &= ~(1<<i);
 408   4                                      else
 409   4                                              InputTemp |= 1<<i;
 410   4                                                                                                                      
 411   4                                      if((STimerState&(1<<i)) == 0)           //软定时器未开启
 412   4                                              STimerState = STimerState|(1<<i);
 413   4                                      else
 414   4                                      { 
 415   5                                              STimerState = STimerState&(~(1<<i));
 416   5                                              STimerValue[i] = 0;
 417   5                                      }
 418   4                              }
 419   3                      }  
 420   2                      
 421   2                      for( i=0; i<4; i++ )                    //对4个输入做处理
 422   2                      {
 423   3                              if( (InputChanged&(1<<i)) != 0 )     //信号有改变
 424   3                              {       //P3_4=0;
 425   4                                      InputChanged &= ~(1<<i);
 426   4                                      if( (InputState&(1<<i)) == OFF )                //按钮被释放
 427   4                                      {
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 8   

 428   5                                              switch(i)       //输入数据处理,发送数据
 429   5                                              {
 430   6                                              case 0:
 431   6                                                      //P3_4=0;
 432   6                                                      UpRunRelSend();
 433   6                                                      break;
 434   6                                              case 1:
 435   6                                                      DownRunRelSend();
 436   6                                                      break;
 437   6                                              case 2:
 438   6                                                      LockLadRelSend();
 439   6                                                      break;
 440   6                                              case 3:
 441   6                                                      FireKeyRelSend();       //对消防输入信号的触发和撤销做处理
 442   6                                                      break;
 443   6                                              default:
 444   6                                                      break;
 445   6                                              }
 446   5                                      }
 447   4                                      else                            //按钮按下
 448   4                                      {
 449   5                                              switch(i)       //输入数据处理,发送数据
 450   5                                              {
 451   6                                              case 0:
 452   6                                                      UpRunPreSend();
 453   6                                                      break;
 454   6                                              case 1:
 455   6                                                      DownRunPreSend();
 456   6                                                      break;
 457   6                                              case 2:
 458   6                                                      LockLadPreSend();
 459   6                                                      break;
 460   6                                              case 3:
 461   6                                                      FireKeyPreSend();       //对消防输入信号的触发和撤销做处理
 462   6                                                      break;
 463   6                                              default:
 464   6                                                      break;
 465   6                                              }
 466   5                                      }
 467   4                              }       
 468   3                      }
 469   2                      
 470   2                      if( CANDataReceived == TRUE )           //有信号接收
 471   2                      {       
 472   3                              CanRcv_Prg();                   //接收信号处理,如有需要则更新数码管显示
 473   3                              CANDataReceived = FALSE;
 474   3                      }       
 475   2                      //数码管显示,按列依次显示,每次显示一列
 476   2                      if(scanRow==5)
 477   2                              scanRow=0;
 478   2                      
 479   2                      *reg1=~(1<<scanRow);
 480   2                      *reg2=DirectionBuf[scanRow];
 481   2                      *reg3=HighBuf[scanRow];
 482   2                      *reg4=LowBuf[scanRow];
 483   2                      scanRow++;      
 484   2                      for(i=0;i<25;i++);
 485   2                      if(P3_4==0)
 486   2                      P3_5=1;
 487   2                      else
 488   2                      P3_5=0;
 489   2              }//FOR
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 9   

 490   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1206    ----
   CONSTANT SIZE    =    290    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     54       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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