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

📄 main.lst

📁 一个基本的平安钟控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 361   1      uchar GROUP_ST_ANAL,GROUP_ST_NEW;
 362   1      
 363   1              GROUP_ST_NEW = P3>>4;                                                   //取P3.5的数据,放置到比较数据的第2位
 364   1              GROUP_ST_NEW &=0X02;
C51 COMPILER V8.08   MAIN                                                                  08/05/2008 10:21:25 PAGE 7   

 365   1              GROUP_ST_NEW += P1&0x01;                                                //取P1.0的数据,放置到比较数据的第1位
 366   1              GROUP_ST_ANAL=GROUP_ST_NEW^Read_LowST;
 367   1              Read_LowST = GROUP_ST_NEW;
 368   1              
 369   1              for(i=3;i<5;i++)                                                                //i=3,表示P1.0,                i=4,表示P3.5
 370   1              {                                                                                               //数据的第4位             数据的第5位
 371   2                      if( GROUP_ST_ANAL & 0x01 )
 372   2                      {
 373   3                              CHECK_Reg[i] = EXT_SCAN_ON;
 374   3                              if( EXT_SCAN_PRI )
 375   3                                      CHECK_Reg[i]++;
 376   3                              else
 377   3                                      goto NO_PRI;
 378   3                      }
 379   2                      else
 380   2                      {
 381   3                              if( CHECK_Reg[i] >EXT_SCAN_ON)
 382   3                              {
 383   4                                      if( CHECK_Reg[i] >EXT_SCAN_LEN )
 384   4                                      {
 385   5      NO_PRI:                         if( (GROUP_ST_NEW&0X01)==0)
 386   5                                                      SYSPINSTA |=1<<(i+1);           //由移i位后构成新数据
 387   5                                              CHECK_Reg[i] = EXT_SCAN_OFF;
 388   5                                      }
 389   4                                      else
 390   4                                      {
 391   5                                              CHECK_Reg[i]++;
 392   5                                      }
 393   4                              }
 394   3                              else
 395   3                              {
 396   4                                      CHECK_Reg[i] = EXT_SCAN_OFF;
 397   4                              }
 398   3                      }
 399   2                      GROUP_ST_ANAL = GROUP_ST_ANAL >>1;
 400   2                      GROUP_ST_NEW = GROUP_ST_NEW >>1;
 401   2              }
 402   1      }
 403          
 404          /******************************************************************************
 405          subroutine name: TimerCounterJudge
 406          input variable:       /
 407          output variable:    /
 408          description: 系统的定时器函数          
 409          ******************************************************************************/
 410          void TimerCounterJudge(void)
 411          {
 412   1      uchar pinNO;
 413   1      
 414   1              for(pinNO=0;pinNO<8;pinNO++)
 415   1              {
 416   2                      if(SYSpin[pinNO].delay==0)
 417   2                      {
 418   3                              if((SYSpin[pinNO].counter<250)&&(SYSpin[pinNO].counter>1))
 419   3                              {
 420   4                                      SYSpin[pinNO].counter--;
 421   4                              }
 422   3                              else if(SYSpin[pinNO].counter==1)
 423   3                              {
 424   4                                      SYSpin[pinNO].counter--;
 425   4                                      SYSpin[pinNO].st =~SYSpin[pinNO].st;
 426   4                                      SYSpin[pinNO].st &=0X01;
C51 COMPILER V8.08   MAIN                                                                  08/05/2008 10:21:25 PAGE 8   

 427   4                              }
 428   3                              else if(SYSpin[pinNO].counter==0)
 429   3                              {
 430   4                                      continue;
 431   4                              }
 432   3                              switch(pinNO)
 433   3                              {
 434   4                                      case 1:
 435   4                                              if(SYSpin[pinNO].st&0x01)
 436   4                                                      pinnop11 = 1;
 437   4                                              else
 438   4                                                      pinnop11 = 0;
 439   4                                              break;
 440   4                                      case 2:
 441   4                                              if(SYSpin[pinNO].st&0x01)
 442   4                                                      pinnop12 = 1;
 443   4                                              else
 444   4                                                      pinnop12 = 0;
 445   4                                              break;
 446   4                                      case 3:
 447   4                                              if(SYSpin[pinNO].st&0x01)
 448   4                                                      pinnop13 = 1;
 449   4                                              else
 450   4                                                      pinnop13 = 0;
 451   4                                              break;
 452   4                                      case 4:
 453   4                                              if(SYSpin[pinNO].st&0x01)
 454   4                                                      pinnop14 = 1;
 455   4                                              else
 456   4                                                      pinnop14 = 0;
 457   4                                              break;
 458   4                                      case 5:
 459   4                                              if(SYSpin[pinNO].st&0x01)
 460   4                                                      pinnop15 = 1;
 461   4                                              else
 462   4                                                      pinnop15 = 0;
 463   4                                      break;
 464   4                                      case 6:
 465   4                                              if(SYSpin[pinNO].st&0x01)
 466   4                                                      pinnop16 = 1;
 467   4                                              else
 468   4                                                      pinnop16 = 0;
 469   4                                              break;
 470   4                                      case 7:
 471   4                                              if(SYSpin[pinNO].st&0x01)
 472   4                                                      pinnop17 = 1;
 473   4                                              else
 474   4                                                      pinnop17 = 0;
 475   4                                              break;
 476   4                                      case 0:
 477   4                                              if(SYSpin[pinNO].st&0x01)
 478   4                                                      pinnop37 = 1;
 479   4                                              else
 480   4                                                      pinnop37 = 0;
 481   4                                              break;
 482   4                                      default:
 483   4                                              break;
 484   4                              }
 485   3                      }
 486   2                      else
 487   2                      {
 488   3                              SYSpin[pinNO].delay--;
C51 COMPILER V8.08   MAIN                                                                  08/05/2008 10:21:25 PAGE 9   

 489   3                      }
 490   2              }
 491   1      }
 492          
 493          /*****************************************************************************
 494          subroutine name: PinCtr
 495          input variable:           /
 496          output variable:        /
 497          description:将pinS脚置PinST持续时间为Seconds*10ms                  
 498          ****************************************************************************/
 499          void PinCtr(uchar pinS,uchar delays,uchar Seconds,uchar PinST)
 500          {
 501   1              SYSpin[pinS].delay = delays;    
 502   1              SYSpin[pinS].counter = Seconds;
 503   1              SYSpin[pinS].st = PinST;
 504   1      }
 505          
 506          /****************************************************************************
 507          subroutine name: Timer0Int
 508          input variable:       /
 509          output variable:    /
 510          description:           
 511          ***************************************************************************/
 512          void Timer0Int(void) interrupt 1
 513          {
 514   1      
 515   1              LOAD_TIMER0(TimerH_1ms, TimerL_1ms);
 516   1              Counter1ms++;
 517   1              if(Counter1ms <10)
 518   1                      return;
 519   1              Counter1ms = 0;
 520   1              Counter10ms++;
 521   1              Flag_10ms = 1;
 522   1              if(Counter10ms <10)
 523   1                      return;
 524   1              Counter10ms = 0;
 525   1              Flag_100ms = 1; 
 526   1      }
 527          
 528          
 529          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1306    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     64       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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