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

📄 main.lst

📁 51单片机的内存优化和中断的有用知识
💻 LST
📖 第 1 页 / 共 2 页
字号:
 329   1            LcdWC((XPOS+0x40)|0x80);
 330   1         else if(YPOS==0x02)
 331   1            LcdWC((XPOS+0x10)|0x80);
 332   1      }
 333          
 334          /*****************************************************************************/
 335          //lcd初始化
 336          void InitLcd(void)
 337          {  
 338   1      LCDEPIN=0;
 339   1      delay(150); LcdWCN(0x38);  /*设置8位格式,2行,2*16*/
 340   1      
 341   1         LcdWC(0x08);        /*清除显示*/
 342   1         LcdWC(0x06);       /*设定输入方式,增量不移位*/
 343   1         LcdWC(0x0c);    /*整体显示,关光标,不闪烁*/
 344   1      }
 345          
 346          /*****************************************************************************/
 347          //字符串显示
 348          void LcdWDA(unsigned char x,unsigned char y,unsigned char *s) //写显示
 349          {
 350   1          YPOS=y;
 351   1          for(XPOS=x;XPOS<16 && *s != 0;XPOS++)
 352   1          {  LcdPos();
 353   2            LcdWD(*s);
 354   2            s++;
 355   2         }
 356   1      }
 357          
 358          /*****************************************************************************/
 359          //数字-》一位数字显示
 360          void Lcd_ONENO(int x,int y,int i)
 361          {
 362   1      
 363   1      char LS[2];
 364   1      LS[0]=i+'0';
 365   1      LS[1]='\0';
C51 COMPILER V8.05a   MAIN                                                                 03/01/2009 15:15:54 PAGE 7   

 366   1      LcdWDA(x,y,LS);
 367   1      }
 368          
 369          
 370          
 371          /*****************************************************************************/
 372          //数字-》三位数字显示
 373          void Lcd_THREENO(int x,int y,int i)
 374          {
 375   1      char g,s,b,l;
 376   1      char LS[4];
 377   1      g=i%10;
 378   1      l=i/10;
 379   1      s=l%10;
 380   1      l=l/10;
 381   1      b=l%10;
 382   1      LS[0]=b+'0';
 383   1      LS[1]=s+'0';
 384   1      LS[2]=g+'0';
 385   1      LS[3]='\0';
 386   1      LcdWDA(x,y,LS);
 387   1      }
 388          
 389          /*****************************************************************************/
 390          //数字-》四位数字显示
 391          void Lcd_FOURNO(int x,int y,int i)
 392          {
 393   1      char g,s,b,q,l;
 394   1      char LS[4];
 395   1      g=i%10;
 396   1      l=i/10;
 397   1      s=l%10;
 398   1      l=l/10;
 399   1      b=l%10;
 400   1      l=l/10;
 401   1      q=l%10;
 402   1      LS[0]=q+'0';
 403   1      LS[1]=b+'0';
 404   1      LS[2]=s+'0';
 405   1      LS[3]=g+'0';
 406   1      LS[4]='\0';
 407   1      LcdWDA(x,y,LS);
 408   1      }
 409          
 410          
 411          /*****************************************************************************/
 412          //lcd显示
 413          Lcdshow()
 414          {
 415   1      LcdWDA(0,0,COMPANY);
 416   1      Lcd_FOURNO(9,0,COUNT);
 417   1      LcdWDA(13,0,CPS);
 418   1      LcdWDA(0,1,SPD);
 419   1      LcdWDA(7,1,R);
 420   1      LcdWDA(9,1,L);
 421   1      LcdWDA(14,1,MM);
 422   1      Lcd_ONENO(6,1,SPEED);
 423   1      Lcd_THREENO(11,1,LENGTH);       
 424   1      }
 425          
 426          /*****************************************************************************/
 427          //光标显示
C51 COMPILER V8.05a   MAIN                                                                 03/01/2009 15:15:54 PAGE 8   

 428          void Lcdflash()
 429          {
 430   1          if(MANU==1)
 431   1          {        
 432   2              LcdWDA(6,1,PLACE);
 433   2              delay(4000);
 434   2              Lcdshow();
 435   2              delay(4000);
 436   2              }
 437   1      
 438   1              if(MANU==2&&LEFT==0)
 439   1                      {
 440   2                      LcdWDA(13,1,PLACE);
 441   2                      delay(4000);
 442   2                      Lcdshow();
 443   2                      delay(4000);
 444   2                      }
 445   1              if(MANU==2&&LEFT==1)
 446   1                      {
 447   2                      LcdWDA(12,1,PLACE);
 448   2                      delay(4000);
 449   2                      Lcdshow();
 450   2                      delay(4000);
 451   2                      }
 452   1              if(MANU==2&&LEFT==2)
 453   1                      {
 454   2                      LcdWDA(11,1,PLACE);
 455   2                      delay(4000);
 456   2                      Lcdshow();
 457   2                      delay(4000);
 458   2                      }
 459   1              if(MANU==2&&LEFT>2)
 460   1                      {
 461   2                      LEFT=0;
 462   2                      }
 463   1      
 464   1          if(MANU==3)
 465   1          {        
 466   2              LcdWDA(12,0,PLACE);
 467   2              LcdWDA(11,0,PLACE);
 468   2              LcdWDA(10,0,PLACE);
 469   2              LcdWDA(9,0,PLACE);
 470   2              delay(4000);
 471   2              Lcdshow();
 472   2              delay(4000);
 473   2              }        
 474   1      }
 475          /*****************************************************************************/
 476          //读数据
 477          void READ()
 478          {
 479   1      UCHAR X;
 480   1      UCHAR Y;
 481   1      IRcvStr(0xA0,0x600,&SPEED,1);
 482   1      
 483   1      IRcvStr(0xA0,0x620,&X,1);
 484   1      IRcvStr(0xA0,0x630,&Y,1);
 485   1      LENGTH=Y%10*100+X%100;
 486   1      
 487   1      IRcvStr(0xA0,0x640,&X,1);
 488   1      IRcvStr(0xA0,0x650,&Y,1);
 489   1      COUNT=Y%100*100+X%100;
C51 COMPILER V8.05a   MAIN                                                                 03/01/2009 15:15:54 PAGE 9   

 490   1      }
 491          
 492          /*****************************************************************************/
 493          //写数据
 494          WRIGHT ()
 495          {
 496   1      UCHAR X;
 497   1      UCHAR Y;
 498   1      ISendStr(0xA0,0x600,&SPEED,1);
 499   1      
 500   1      X=LENGTH%100;
 501   1      Y=LENGTH/100%10;
 502   1      ISendStr(0xA0,0x620,&X,1);
 503   1      ISendStr(0xA0,0x630,&Y,1);
 504   1      
 505   1      X=COUNT%100;
 506   1      Y=COUNT/100%100;
 507   1      ISendStr(0xA0,0x640,&X,1);
 508   1      ISendStr(0xA0,0x650,&Y,1);
 509   1      
 510   1      Lcdshow(); 
 511   1      RING();
 512   1      }
 513          /*****************************************************************************/
 514          //参数匹配
 515          void MADE()
 516          {
 517   1      if (MANU==1)
 518   1              {if (INC==1)
 519   2                      {SPEED++;
 520   3                      INC=0;}
 521   2              if (DEC==1)
 522   2                      {SPEED--;
 523   3                      DEC=0;}
 524   2              }
 525   1      
 526   1      
 527   1      if (MANU==2)
 528   1              { if(LEFT>2)
 529   2                              {
 530   3                               LEFT=0;
 531   3                              }
 532   2                      if(LEFT==0)
 533   2                              {
 534   3                               if (INC==1)
 535   3                                      {LENGTH++;
 536   4                                      INC=0;}
 537   3                               if (DEC==1)
 538   3                                      {LENGTH--;
 539   4                                      DEC=0;}
 540   3                              }
 541   2                      if(LEFT==1)
 542   2                              {
 543   3                               if (INC==1)
 544   3                                      {LENGTH+=10;
 545   4                                      INC=0;}
 546   3                               if (DEC==1)
 547   3                                      {LENGTH-=10;
 548   4                                      DEC=0;}
 549   3                              }
 550   2                      if(LEFT==2)
 551   2                              {
C51 COMPILER V8.05a   MAIN                                                                 03/01/2009 15:15:54 PAGE 10  

 552   3                               if (INC==1)
 553   3                                      {LENGTH+=100;
 554   4                                      INC=0;}
 555   3                               if (DEC==1)
 556   3                                      {LENGTH-=100;
 557   4                                      DEC=0;}
 558   3                              }
 559   2              }
 560   1      
 561   1      if (MANU==3)
 562   1      {
 563   2                               if (INC==1)
 564   2                                      COUNT=0;
 565   2                               if (DEC==1)
 566   2                                      COUNT=0;
 567   2      
 568   2      
 569   2      }
 570   1      
 571   1      if(SPEED<0||SPEED>9)
 572   1      SPEED=0;
 573   1      
 574   1      if(LENGTH<0||LENGTH>999)
 575   1      LENGTH=0;
 576   1      }
 577          
 578          /***************************************************************************/
 579          //电机运行
 580          MOTOR_RUN()
 581          {
 582   1      UCHAR WAIT;
 583   1      WAIT=10-SPEED;  // 脉冲占空比设置
 584   1      if(LEFT_BIT==1&&RIGHT_BIT==1&&SAFE==1)
 585   1      LcdWDA(11,1,GO);
 586   1      for(PLUSE=LENGTH*100;SPEED!=0&&PLUSE>0&&RUN;PLUSE--)// 脉冲量设置               
 587   1                      {       
 588   2                              CW=1;//步进电机正反转设置-》正转
 589   2                              if(LEFT_BIT==0||RIGHT_BIT==0||SAFE==0)
 590   2                              {CS=0;RUN=0;}
 591   2                              else
 592   2                              CS=1;// 步进电机使能
 593   2                              CLK=~CLK;
 594   2                              delay(WAIT);                    
 595   2                       }
 596   1      
 597   1      if(LEFT_BIT==1&&RIGHT_BIT==1&&SAFE==1)
 598   1      LcdWDA(11,1,BACK);
 599   1      
 600   1      for(PLUSE=LENGTH*100;SPEED!=0&&PLUSE>0&&RUN;PLUSE--)// 脉冲量设置               
 601   1                      {       
 602   2                              CW=0;//步进电机正反转设置-》反转
 603   2                              if(LEFT_BIT==0||RIGHT_BIT==0||SAFE==0)
 604   2                              {CS=0;RUN=0;}
 605   2                              else
 606   2                              CS=1;// 步进电机使能
 607   2                              CLK=~CLK;
 608   2                              delay(WAIT);                    
 609   2                       }
 610   1      Lcd_THREENO(11,1,LENGTH);
 611   1      
 612   1      COUNT++;
 613   1      WRIGHT();
C51 COMPILER V8.05a   MAIN                                                                 03/01/2009 15:15:54 PAGE 11  

 614   1      
 615   1      RUN=0;
 616   1      CS=0;
 617   1      }
 618          
 619          /*****************************************************************************/ 
 620          //主程序
 621          main()
 622          {       
 623   1              sercon();
 624   1              InitLcd();
 625   1              CS=0;   
 626   1              LcdWDA(0,0,CLEAR);
 627   1              LcdWDA(0,1,CLEAR);
 628   1          READ();
 629   1              MADE();
 630   1              delay(2000);
 631   1              LcdWDA(0,0,CLEAR);
 632   1              LcdWDA(0,1,CLEAR);
 633   1          Lcdshow();  
 634   1      while(1)
 635   1         {    
 636   2       if(SAVE)
 637   2               {
 638   3               WRIGHT();
 639   3               SAVE=0;
 640   3               }       
 641   2               KEY();
 642   2               Lcdflash();
 643   2               MADE();
 644   2        if(RUN)
 645   2              {
 646   3              MOTOR_RUN();
 647   3              }
 648   2         }
 649   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1927    ----
   CONSTANT SIZE    =     54    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44      27
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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