test.lst

来自「校园打铃系统」· LST 代码 · 共 1,256 行 · 第 1/4 页

LST
1,256
字号
 295   3                       {
 296   4                           i++;
 297   4                           break;
 298   4                       }
 299   3                }
 300   2            }
C51 COMPILER V7.06   TEST                                                                  06/07/2007 21:23:10 PAGE 6   

 301   1         else            //整数部分为0
 302   1            {
 303   2             for (i=0;i<8;i++)
 304   2               {
 305   3                if(i==6)
 306   3                   {
 307   4                      LCDDisplaybuffer[i]='.';
 308   4                   }
 309   3                 else
 310   3                   {
 311   4                    LCDDisplaybuffer[i]=CHR[frequency%10];
 312   4                    frequency/=10;
 313   4                   }
 314   3             }
 315   2          }
 316   1      
 317   1         for (j=0;j<7;j++)     //可以通过改变j的范围来增减显示的位数
 318   1             {
 319   2                LCD_write_char(x++,y,LCDDisplaybuffer[i-1]);
 320   2                i--;
 321   2      
 322   2             }
 323   1      
 324   1      
 325   1      
 326   1      }
 327          
 328          /*********************************************************************************
 329          ** 函数名:INT_NUM_Display(unsigned int Num)**************************************
 330          ** 功能:显示整数*****************************************************************
 331          ** 入口参数:unsigned int Num (Num 为调用这个子程序时传入的数据)****************
 332          *********** 这里可以通过改变div的值来增减显示的位数 ******************************
 333          ******这个例子显示5位数***********************************************************
 334          ** 出口参数:无 ******************************************************************
 335          **注意各变量的数据类型,根据数的范围来改变形参的数据类型**************************
 336          **********************************************************************************/
 337          /*void INT_NUM_Display(unsigned int Num,uchar x,uchar y)
 338          {
 339               uchar i;
 340               unsigned int div=10000;
 341               for (i=0;i<8;i++)
 342                   {
 343                       LCDDisplaybuffer[i]=CHR[Num/div];
 344                       Num%=div;
 345                       div/=10;
 346                    }
 347          
 348               LCD_write_string(x,y,LCDDisplaybuffer);
 349          
 350          }
 351          
 352          /*********************************************************************************
 353          ** 函数名:HEX_NUM_Display(long int Num,uchar Bit)********************************
 354          ** 功能:16进制数值显示函数*******************************************************
 355          ** 入口参数:unsigned long Num,uchar Bite( Num   需要显示的数值(最长8位)********
 356          *****************************************(  Bite   有效显示位数 )****************
 357          ** 出口参数:无 ******************************************************************
 358          **********************************************************************************/
 359          /*void HEX_NUM_Display(unsigned long  Num,uchar Bite,uchar x,uchar y)   //这里的形参Num类型一定要为
 360                                                                                //unsigned long,不然不会显示
 361          
 362          {
C51 COMPILER V7.06   TEST                                                                  06/07/2007 21:23:10 PAGE 7   

 363              uchar a=0,i=0;
 364              for(a=8-Bite;a<8;a++)
 365                {
 366          
 367                     LCDDisplaybuffer[i]=CHR[(Num<<(a<<2))>>28];
 368                     i++;
 369                }
 370              LCD_write_string(x,y,LCDDisplaybuffer);
 371          }
 372          
 373          /************************ LCD End **************************************************/
 374          
 375          
 376          /**************************Other Part************************************************/
 377          
 378          /***************send_message**************************/
 379          #define KEY P0
 380          //#define uchar unsigned char
 381          //bit judge_hitkey();
 382          //uchar scan_key();
 383          uchar cd[32]={"                                "};
 384          uchar sp;
 385          void xp(uchar d);
 386          //uchar xx,yy,date0;
 387          void manage_key1(void);
 388          void manage_key2(uchar keycode);
 389          void manage_key3(uchar keycode);
 390          void manage_key4(void);
 391          void manage_key5(uchar keycode);
 392          void manage_key6(uchar keycode);
 393          void manage_key7(uchar keycode);
 394          void manage_key8(void);
 395          void manage_key9(uchar keycode);
 396          void manage_key10(uchar keycode);
 397          void manage_key11(uchar keycode);
 398          //void manage_key12(void);
 399          void manage_key13(uchar keycode);
 400          void manage_key14(uchar keycode);
 401          void manage_key15(uchar keycode);
 402          //void manage_key16(void);
 403          void xp(uchar d);
 404          bit judge_hitkey()
 405          {uchar scancode,keycode; 
 406   1         scancode=0x0f;
 407   1         KEY=scancode;
 408   1         keycode=KEY;
 409   1         if(keycode==0x0f)
 410   1         return(0);
 411   1         else
 412   1         return(1);
 413   1         
 414   1      }
 415          uchar scan_key()
 416          { uchar scancode,keycode; 
 417   1       scancode=0xef;
 418   1        while(scancode!=0xff)
 419   1         {  KEY=scancode;
 420   2            keycode=KEY;
 421   2                if((keycode&0x0f)!=0x0f)
 422   2                break;
 423   2                scancode=(keycode<<1)|0x0f;
 424   2         }
C51 COMPILER V7.06   TEST                                                                  06/07/2007 21:23:10 PAGE 8   

 425   1         
 426   1         
 427   1         keycode=~keycode;
 428   1         return(keycode);
 429   1      }
 430          void key_manage(uchar keycode)
 431          {  switch(keycode)
 432   1         {  case 0x11:manage_key1();break;
 433   2            case 0x12:manage_key2(keycode);break;
 434   2                case 0x14:manage_key3(keycode);break;
 435   2            case 0x18:manage_key4();break;
 436   2                case 0x21:manage_key5(keycode);break;
 437   2            case 0x22:manage_key6(keycode);break;
 438   2                case 0x24:manage_key7(keycode);break;
 439   2            case 0x28:manage_key8();break;
 440   2                case 0x41:manage_key9(keycode);break;
 441   2            case 0x42:manage_key10(keycode);break;
 442   2                case 0x44:manage_key11(keycode);break;
 443   2           // case 0x48:manage_key12();break;
 444   2                case 0x81:manage_key13(keycode);break;
 445   2            case 0x82:manage_key14(keycode);break;
 446   2                case 0x84:manage_key15(keycode);break;
 447   2           // case 0x88:manage_key16();break;
 448   2               default:  break;
 449   2      
 450   2         }
 451   1      }
 452          
 453          
 454          void manage_key1(void)
 455          {cd[sp]='1';
 456   1       xp(sp);
 457   1       delay_nms(100);
 458   1      sp++;
 459   1      if(sp==32)
 460   1      sp=31;
 461   1      }
 462          /***************************************
 463          ****************************************/
 464          void manage_key2(uchar keycode )
 465          {
 466   1      do{cd[sp]='2';
 467   2       xp(sp);
 468   2      delay_nms(100);
 469   2       if(KEY==~keycode)
 470   2         {cd[sp]='a';
 471   3         xp(sp);
 472   3      delay_nms(100);
 473   3          if(KEY==~keycode)
 474   3         {cd[sp]='b';
 475   4          xp(sp);
 476   4      delay_nms(100);
 477   4           if(KEY==~keycode)
 478   4          {cd[sp]='c';
 479   5            xp(sp);
 480   5      delay_nms(100);
 481   5           }
 482   4           }
 483   3            }
 484   2      }while(KEY==~keycode);
 485   1      
 486   1      sp++;
C51 COMPILER V7.06   TEST                                                                  06/07/2007 21:23:10 PAGE 9   

 487   1      if(sp==32)
 488   1      sp=31;
 489   1      }
 490          
 491          /***************************************
 492          ****************************************/
 493          
 494          void manage_key3(uchar keycode)
 495          {
 496   1      do{cd[sp]='3';
 497   2       xp(sp);
 498   2      delay_nms(100);
 499   2       if(KEY==~keycode)
 500   2         {cd[sp]='d';
 501   3         xp(sp);
 502   3      delay_nms(100);
 503   3          if(KEY==~keycode)
 504   3         {cd[sp]='e';
 505   4          xp(sp);
 506   4      delay_nms(100);
 507   4           if(KEY==~keycode)
 508   4          {cd[sp]='f';
 509   5            xp(sp);
 510   5      delay_nms(100);
 511   5           }
 512   4           }
 513   3            }
 514   2      }while(KEY==~keycode);
 515   1      
 516   1      sp++;
 517   1      if(sp==32)
 518   1      sp=31;
 519   1      }
 520          /***************************************
 521          ****************************************/
 522          
 523          void manage_key4(void)
 524          {
 525   1      LCD_init();
 526   1      LCD_write_string(1,LINE1,"sending......");
 527   1      for(xx=0;xx<32;xx++) //字符数组 32个
 528   1      {SBUF=0x06a;
 529   2      delay_nms(10);
 530   2      SBUF=cd[xx];
 531   2      delay_nms(10);
 532   2      while(!TI);
 533   2      TI=0;
 534   2      }
 535   1      LCD_init();
 536   1      LCD_write_string(5,LINE1,"OK!");
 537   1      delay_nms(150);
 538   1      LCD_init();
 539   1      LCD_write_string(0,LINE1,cd);
 540   1      }  
 541          
 542          /***************************************
 543          ****************************************/
 544          
 545          void manage_key5(uchar keycode)
 546          {
 547   1      do{cd[sp]='4';
 548   2       xp(sp);
C51 COMPILER V7.06   TEST                                                                  06/07/2007 21:23:10 PAGE 10  

 549   2      delay_nms(100);
 550   2       if(KEY==~keycode)
 551   2         {cd[sp]='g';
 552   3         xp(sp);
 553   3      delay_nms(100);
 554   3          if(KEY==~keycode)
 555   3         {cd[sp]='h';
 556   4          xp(sp);
 557   4      delay_nms(100);
 558   4           if(KEY==~keycode)
 559   4          {cd[sp]='i';
 560   5            xp(sp);
 561   5      delay_nms(100);
 562   5           }
 563   4           }
 564   3            }
 565   2      }while(KEY==~keycode);
 566   1      
 567   1      sp++;
 568   1      if(sp==32)
 569   1      sp=31;
 570   1      }
 571          
 572          /***************************************
 573          ****************************************/
 574          
 575          void manage_key6(uchar keycode)
 576          {
 577   1      do{cd[sp]='5';
 578   2       xp(sp);
 579   2      delay_nms(100);
 580   2       if(KEY==~keycode)
 581   2         {cd[sp]='j';
 582   3         xp(sp);
 583   3      delay_nms(100);
 584   3          if(KEY==~keycode)
 585   3         {cd[sp]='k';
 586   4          xp(sp);
 587   4      delay_nms(100);
 588   4           if(KEY==~keycode)
 589   4          {cd[sp]='l';
 590   5            xp(sp);
 591   5      delay_nms(100);
 592   5           }
 593   4           }
 594   3            }
 595   2      }while(KEY==~keycode);
 596   1      
 597   1      sp++;
 598   1      if(sp==32)

⌨️ 快捷键说明

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