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

📄 timer1.lst

📁 protues仿真keil程序 初学者的福音
💻 LST
📖 第 1 页 / 共 3 页
字号:
 552   3              }
 553   2              break ;
 554   2              
 555   2              case GREEN :
 556   2              if(MachineState==WORK)
 557   2              {
 558   3                  CurrLed=4 ;
 559   3                  //这一路正在运行
 560   3                  if(IsRun[CurrLed]==1)
 561   3                  {
 562   4                      PLed4=1 ;
 563   4                      IsRun[CurrLed]=0 ;
 564   4                      //停止并数据复位。
 565   4                      TimeDelay[CurrLed]=0 ;
 566   4                  }
 567   3                  else 
 568   3                  {
 569   4                      PLed4=0 ;
 570   4                      IsRun[CurrLed]=1 ;
 571   4                      TimeDelay[CurrLed]=TimeSave[CurrLed];
 572   4                  }
 573   3              }
 574   2              
 575   2              
 576   2              else 
 577   2              {
 578   3                  PLed4=0 ;
 579   3                  MachineState=SET5 ;
 580   3                  if(TimeSave[4]>=100)
 581   3                  TimeSave[4]-=100 ;
 582   3                  IsSetFirst=1 ;
 583   3              }
 584   2              break ;
 585   2              
 586   2              case BLUE :
 587   2              if(MachineState==WORK)
 588   2              {
 589   3                  CurrLed=5 ;
 590   3                  //这一路正在运行
 591   3                  if(IsRun[CurrLed]==1)
 592   3                  {
 593   4                      PLed5=1 ;
 594   4                      IsRun[CurrLed]=0 ;
 595   4                      //停止并数据复位。
 596   4                      TimeDelay[CurrLed]=0 ;
 597   4                  }
 598   3                  else 
 599   3                  {
 600   4                      PLed5=0 ;
 601   4                      IsRun[CurrLed]=1 ;
 602   4                      TimeDelay[CurrLed]=TimeSave[CurrLed];
 603   4                  }
 604   3              }
 605   2              
 606   2              else 
 607   2              {
 608   3                  PLed5=0 ;
 609   3                  MachineState=SET6 ;
 610   3                  if(TimeSave[5]>=100)
 611   3                  TimeSave[5]-=100 ;
 612   3                  IsSetFirst=1 ;
 613   3              }
C51 COMPILER V9.01   TIMER1                                                                05/06/2012 20:40:06 PAGE 11  

 614   2              break ;
 615   2              
 616   2              case UP :
 617   2              funUp();
 618   2              break ;
 619   2              case DOWN :
 620   2              funDown();
 621   2              break ;
 622   2              
 623   2              case LEFT :
 624   2              funLeft();
 625   2              break ;
 626   2              case RIGHT :
 627   2              funRight();
 628   2              break ;
 629   2              case OK :
 630   2              funOk();
 631   2              break ;
 632   2              default :
 633   2              break ;
 634   2          }
 635   1          KeyCode=0x00 ;
 636   1          
 637   1          
 638   1          
 639   1          //按键p1持续按下的代码
 640   1          if(KeyPressing1)
 641   1          {
 642   2              if(MachineState!=WORK)
 643   2              {
 644   3                  
 645   3                  //持续按下的时间超过50*20=1000ms则
 646   3                  if(++Key1PressingTime>=20)
 647   3                  {
 648   4                      //每200ms会执行一次keycode++;
 649   4                      if(Key1PressingTime%5==0)
 650   4                      switch(KeyPressing1)
 651   4                      {
 652   5                          case YELLOW :
 653   5                          PLed0=0 ;
 654   5                          MachineState=SET1 ;
 655   5                          IsSetFirst=1 ;
 656   5                          if(TimeSave[0]<100)TimeSave[0]+=100 ;
 657   5                          IsSetFirst=1 ;
 658   5                          break ;
 659   5                          case ORANGE :
 660   5                          PLed1=0 ;
 661   5                          MachineState=SET2 ;
 662   5                          IsSetFirst=1 ;
 663   5                          if(TimeSave[1]<100)TimeSave[1]+=100 ;
 664   5                          IsSetFirst=1 ;
 665   5                          break ;
 666   5                          case PURPLE :
 667   5                          PLed2=0 ;
 668   5                          MachineState=SET3 ;
 669   5                          IsSetFirst=1 ;
 670   5                          if(TimeSave[2]<100)TimeSave[2]+=100 ;
 671   5                          IsSetFirst=1 ;
 672   5                          break ;
 673   5                          case RED :
 674   5                          PLed3=0 ;
 675   5                          MachineState=SET4 ;
C51 COMPILER V9.01   TIMER1                                                                05/06/2012 20:40:06 PAGE 12  

 676   5                          IsSetFirst=1 ;
 677   5                          if(TimeSave[3]<100)TimeSave[3]+=100 ;
 678   5                          IsSetFirst=1 ;
 679   5                          break ;
 680   5                          case GREEN :
 681   5                          PLed4=0 ;
 682   5                          MachineState=SET5 ;
 683   5                          IsSetFirst=1 ;
 684   5                          if(TimeSave[4]<100)TimeSave[4]+=100 ;
 685   5                          IsSetFirst=1 ;
 686   5                          break ;
 687   5                          case BLUE :
 688   5                          PLed5=0 ;
 689   5                          MachineState=SET6 ;
 690   5                          IsSetFirst=1 ;
 691   5                          if(TimeSave[5]<100)TimeSave[5]+=100 ;
 692   5                          IsSetFirst=1 ;
 693   5                          break ;
 694   5                          case UP :
 695   5                          IsFlashTime=0 ;
 696   5                          funUp();
 697   5                          break ;
 698   5                          case DOWN :
 699   5                          IsFlashTime=0 ;
 700   5                          funDown();
 701   5                          break ;
 702   5                          default :
 703   5                          break ;
 704   5                      }
 705   4                  }
 706   3                  
 707   3              }
 708   2          }
 709   1          else 
 710   1          Key1PressingTime=0 ;
 711   1          //该按键出现弹起现象,则时间恢复为0
 712   1          
 713   1          //按键p2持续按下的代码
 714   1          if(KeyPressing2)
 715   1          {
 716   2              //持续按下的时间超过50*20=1000ms则
 717   2              if(++Key2PressingTime>=20)
 718   2                  if(KeyPressing2==(OK&0x0e))
 719   2                      if(MachineState==WORK)
 720   2                      {
 721   3                          MachineState=SET1 ;
 722   3                          if(TimeSave[0]>=100)
 723   3                          TimeSave[0]-=100 ;
 724   3                          IsSetFirst=1 ;
 725   3                          
 726   3                      }
 727   2              
 728   2          }
 729   1          else 
 730   1          Key2PressingTime=0 ;
 731   1          //该按键出现弹起现象,则时间恢复为0
 732   1          
 733   1          
 734   1      }
 735          
 736          
 737          void funUp(void)
C51 COMPILER V9.01   TIMER1                                                                05/06/2012 20:40:06 PAGE 13  

 738          {
 739   1          if(MachineState!=WORK)
 740   1          {
 741   2              if(IsFlash[2])
 742   2              {
 743   3                  if(++DisplayData[2]>=10)
 744   3                  DisplayData[2]=0 ;
 745   3              }
 746   2              else 
 747   2              {
 748   3                  if(++DisplayData[3]>=10)
 749   3                  DisplayData[3]=0 ;
 750   3              }
 751   2          }
 752   1      }
 753          void funDown(void)
 754          {
 755   1          if(MachineState!=WORK)
 756   1          {
 757   2              if(IsFlash[2])
 758   2              {
 759   3                  if(--DisplayData[2]>=10)
 760   3                  DisplayData[2]=9 ;
 761   3              }
 762   2              else 
 763   2              {
 764   3                  if(--DisplayData[3]>=10)
 765   3                  DisplayData[3]=9 ;
 766   3              }
 767   2          }
 768   1          
 769   1      }
 770          
 771          
 772          void funLeft(void)
 773          {
 774   1          if(MachineState!=WORK)
 775   1          {
 776   2              IsFlash[2]=0x01 ;
 777   2              IsFlash[3]=0x00 ;
 778   2          }
 779   1      }
 780          void funRight(void)
 781          {
 782   1          if(MachineState!=WORK)
 783   1          {
 784   2              IsFlash[2]=0x00 ;
 785   2              IsFlash[3]=0x01 ;
 786   2          }
 787   1          
 788   1      }
 789          void funOk(void)
 790          {
 791   1          unsigned char i ;
 792   1          //保存数据并进入倒计时暂停状态
 793   1          if(MachineState!=WORK)
 794   1          {
 795   2              
 796   2              IsFlash[2]=0x00 ;
 797   2              IsFlash[3]=0x00 ;
 798   2              if(TimeSave[MachineState-1]<100)
 799   2              TimeSave[MachineState-1]=DisplayData[2]*10+DisplayData[3];
C51 COMPILER V9.01   TIMER1                                                                05/06/2012 20:40:06 PAGE 14  

 800   2              else 
 801   2              TimeSave[MachineState-1]=DisplayData[2]*10+DisplayData[3]+100 ;
 802   2              
 803   2              MachineState=WORK ;
 804   2              for(i=0;i<6;i++)
 805   2              {
 806   3                  TimeDelay[i]=TimeSave[i];
 807   3                  IsRun[i]=0 ;
 808   3              }
 809   2              //这里保存数据到eeprom
 810   2                 sector_erase(0x4000);
 811   2                 sequential_write_flash_in_one_sector(0x4000, 6, TimeSave );
 812   2          }
 813   1      }
 814          
 815          
 816          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1606    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     39       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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