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

📄 key.lst

📁 CH451专用键盘扫描
💻 LST
📖 第 1 页 / 共 2 页
字号:
 297   4                                      deal_device_num();
 298   4                              else display_second_menu(temp);
 299   4      
 300   4                              if(led_time_over_bit)   // 下层菜单超时退出.    
 301   4                                      break;
 302   4                              
 303   4                              if(temp==6)
C51 COMPILER V7.07   KEY                                                                   04/06/2006 10:20:44 PAGE 6   

 304   4                              {
 305   5                                      display_led(7,LED_N);
 306   5                                      display_led(6,LED_b);
 307   5                              }
 308   4      
 309   4                              display_led(5,LED_NONE);
 310   4                              display_led(4,LED_NONE);
 311   4                              display_led(3,LED_NONE);
 312   4                      }
 313   3      
 314   3                      else if(key==KEY_ESC)
 315   3                              break;
 316   3              }
 317   2          }
 318   1      }
 319          
 320          void deal_enable(uchar num)     // 键盘设置模块使能.
 321          {
 322   1              bit status_bit;
 323   1              uchar check_key;
 324   1              
 325   1              status_bit=(bit)(keyset_enable&num_bit[num]);
 326   1      
 327   1              display_led(5,led_num[num]|0x80);
 328   1              display_led(4,LED_O);
 329   1              if(status_bit)
 330   1                      display_led(3,LED_N);
 331   1              else display_led(3,LED_F);  //
 332   1      
 333   1              t1s1=0;
 334   1              ////EX0=1;
 335   1              //while((key_bit==0)&&(t1s1<=30));
 336   1              while(1)
 337   1              {
 338   2                      if(t1s1>=30)    // 超时退出.
 339   2                      {       t1s1=0;
 340   3                              led_time_over_bit=1;
 341   3                              break;
 342   3                      }
 343   2                      
 344   2                      check_key=get_key();
 345   2                      if(check_key>=0x40)
 346   2                      {
 347   3                              key=check_key;
 348   3                              key_bit=1;
 349   3                      }
 350   2                      else key_bit=0;
 351   2                      
 352   2              if(key_bit)     // 对按键处理.
 353   2              {       
 354   3                      do{check_key=get_key();}while((check_key&0X40)!=0X00);  // 等待按键松开.
 355   3                      key_bit=0;
 356   3                      t1s1=0;
 357   3      
 358   3                      if((key==KEY_UP)||(key==KEY_DOWN))
 359   3                      {       status_bit=~status_bit;
 360   4                              if(status_bit)
 361   4                                              display_led(3,LED_N);
 362   4                                      else display_led(3,LED_F);
 363   4                                      ////EX0=1;
 364   4                      }
 365   3                      else if(key==KEY_ENTER)
C51 COMPILER V7.07   KEY                                                                   04/06/2006 10:20:44 PAGE 7   

 366   3                      {       if(status_bit)
 367   4                              {       keyset_enable|=num_bit[num];
 368   5                                      putchar(keyset_enable);
 369   5                              }
 370   4                                      else
 371   4                                      {       keyset_enable&=(~num_bit[num]);
 372   5                                              putchar(keyset_enable);
 373   5                                      }
 374   4                                      dat_changed_bit=1;
 375   4                                      ////EX0=1;
 376   4                              break;
 377   4                      }
 378   3                      else if(key==KEY_ESC)   
 379   3                      {
 380   4                              ////EX0=1;
 381   4                              break;
 382   4                      }
 383   3              }
 384   2          }
 385   1      }
 386          
 387          void display_second_menu(uchar type) // type:输入的一级菜单编号.
 388          {
 389   1              uchar temp=1;
 390   1              uchar check_key;
 391   1              
 392   1              display_led(5,led_num[temp]);
 393   1              t1s1=0;
 394   1              ////EX0=1;
 395   1      
 396   1              //while((key_bit==0)&&(t1s1<=30));
 397   1              while(1)
 398   1              {
 399   2                      if(t1s1>=30)    // 超时退出.
 400   2                      {       t1s1=0;
 401   3                              led_time_over_bit=1;
 402   3                              break;
 403   3                      }
 404   2                      
 405   2                      check_key=get_key();
 406   2                      if(check_key>=0x40)
 407   2                      {
 408   3                              key=check_key;
 409   3                              key_bit=1;
 410   3                      }
 411   2                      else key_bit=0;
 412   2                      
 413   2              if(key_bit)     // 对按键处理.
 414   2              {       
 415   3                      do{check_key=get_key();}while((check_key&0X40)!=0X00);  // 等待按键松开.
 416   3                      key_bit=0;
 417   3                      t1s1=0;
 418   3      
 419   3                      if((key==KEY_UP)&&(temp>1))
 420   3                      {
 421   4                              temp--;
 422   4                              display_led(5,led_num[temp]);
 423   4                      }
 424   3                      else if(key==KEY_DOWN)
 425   3                      {       switch(type)
 426   4                              {       case 1:if(temp!=2)temp++;break;
 427   5                                      case 2:if(temp!=6)temp++;break;
C51 COMPILER V7.07   KEY                                                                   04/06/2006 10:20:44 PAGE 8   

 428   5                                      case 3:if(temp!=6)temp++;break;
 429   5                                      case 4:if(temp!=6)temp++;break; // 选频菜单.
 430   5                                      case 5:if(temp!=2)temp++;break;
 431   5                                      default:break;
 432   5                              }
 433   4                              display_led(5,led_num[temp]);
 434   4                      }
 435   3                      else if(key==KEY_ENTER)
 436   3                      {       if(type==2)     // 模块使能控制.
 437   4                                      deal_enable(temp);
 438   4                              else deal_menu(type,temp); // type :一级菜单编号, temp :二级菜单编号.
 439   4      
 440   4                              if(led_time_over_bit)   // 下层菜单超时退出.
 441   4                              {       ////EX0=1;
 442   5                                      break;
 443   5                              }
 444   4                              display_led(5,led_num[temp]);
 445   4                              display_led(4,LED_NONE);
 446   4                              display_led(3,LED_NONE);
 447   4                      }
 448   3                      
 449   3                      else if(key==KEY_ESC)   // 此处向右键没有用到.
 450   3                      {   ////EX0=1;
 451   4                              break;
 452   4                      }               
 453   3                      ////EX0=1;
 454   3              }
 455   2          }
 456   1      }
 457          
 458          // type :一级菜单编号, num2 :二级菜单编号.
 459          void deal_menu(uchar type,uchar num2)
 460          {
 461   1              uchar temp;
 462   1              uchar content;
 463   1              uchar check_key;
 464   1      
 465   1              display_led(5,led_num[num2]|0x80);
 466   1              switch(type)
 467   1              {
 468   2                      case 1: // 查看,设置ATT,
 469   2                      {
 470   3                              content=att[num2-1];// num2=1;读出下行衰减值, num2=2,读出上行衰减值,
 471   3                              temp=content/10;
 472   3                              display_led(4,led_num[temp]);
 473   3                              temp=content%10;
 474   3                              display_led(3,led_num[temp]);
 475   3                      }break;
 476   2                      case 3: // GA.
 477   2                      {
 478   3                              content=gate[num2-1];
 479   3                              temp=content/10;
 480   3                              display_led(4,led_num[temp]);
 481   3                              temp=content%10;
 482   3                              display_led(3,led_num[temp]);
 483   3                      }break;
 484   2                      case 4: // SP.有待修改.
 485   2                      {
 486   3                              content=gate[num2-1];
 487   3                              temp=content/10;
 488   3                              display_led(4,led_num[temp]);
 489   3                              temp=content%10;
C51 COMPILER V7.07   KEY                                                                   04/06/2006 10:20:44 PAGE 9   

 490   3                              display_led(3,led_num[temp]);
 491   3                      }break;
 492   2                      case 5: // PA.
 493   2                      {
 494   3                              content=ppout[num2-1];
 495   3                              temp=content/10;
 496   3                              display_led(4,led_num[temp]);
 497   3                              temp=content%10;
 498   3                              display_led(3,led_num[temp]);
 499   3                      }break;
 500   2                      default:break;
 501   2      
 502   2              }
 503   1      
 504   1              t1s1=0;
 505   1              ////EX0=1;
 506   1      
 507   1              //while((key_bit==0)&&(t1s1<=30));
 508   1              while(1)
 509   1              {
 510   2                      if(t1s1>=30)    // 超时退出.
 511   2                      {       t1s1=0;
 512   3                              led_time_over_bit=1;
 513   3                              break;
 514   3                      }
 515   2                      
 516   2                      check_key=get_key();
 517   2                      if(check_key>=0x40)
 518   2                      {
 519   3                              key=check_key;
 520   3                              key_bit=1;
 521   3                      }
 522   2                      else key_bit=0;
 523   2                      
 524   2              if(key_bit)     // 对按键处理.
 525   2              {       
 526   3                      do{check_key=get_key();}while((check_key&0X40)!=0X00);  // 等待按键松开.
 527   3                      key_bit=0;
 528   3                      t1s1=0;
 529   3      
 530   3                      if((key==KEY_UP)&&(content>0)&&(type!=5))
 531   3                      {
 532   4                              content--;
 533   4                              temp=content/10;
 534   4                                      display_led(4,led_num[temp]);
 535   4                                      temp=content%10;
 536   4                                      display_led(3,led_num[temp]);
 537   4                      }
 538   3                      else if((key==KEY_DOWN)&&(type!=5))
 539   3                      {
 540   4                              switch(type)
 541   4                                      {       case 1:if(content<31)content++;break;
 542   5                                              case 3:if(content<99)content++;break;
 543   5                                              case 4:if(content<4)content++;break;    // 选频菜单.
 544   5                                              default:break;
 545   5                                      }
 546   4                              temp=content/10;
 547   4                                      display_led(4,led_num[temp]);
 548   4                                      temp=content%10;
 549   4                                      display_led(3,led_num[temp]);
 550   4                      }
 551   3                      else if((key==KEY_ENTER)&&(type!=5))
C51 COMPILER V7.07   KEY                                                                   04/06/2006 10:20:44 PAGE 10  

 552   3                      {       switch(type)
 553   4                                      {       case 1:att[num2-1]=content;putchar(content);break;
 554   5                                              case 3:gate[num2-1]=content;putchar(content);break;
 555   5                                              case 4:gate[num2-1]=content;putchar(content);break;     // 选频菜单.
 556   5                                              default:break;
 557   5                                      } // type :一级菜单编号, temp :二级菜单编号.
 558   4                              ////EX0=1;
 559   4                              break;
 560   4                      }
 561   3                      else if(key==KEY_ESC)   // 此处向右键没有用到.
 562   3                      {       ////EX0=1;
 563   4                              break;
 564   4                      }
 565   3                              ////EX0=1;
 566   3              }
 567   2          }
 568   1      }
 569          
 570          
 571          
 572          void putchar(unsigned char ch)
 573          {
 574   1          SBUF=ch;
 575   1          while(!TI);
 576   1              TI=0;
 577   1      }
 578          
 579          void UART() interrupt 4 //using 3
 580          {
 581   1              if(RI) RI=0;
 582   1      
 583   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1635    ----
   CONSTANT SIZE    =     19    ----
   XDATA SIZE       =     14    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7      21
   IDATA SIZE       =     10    ----
   BIT SIZE         =      4       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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