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

📄 systhree_master.lst

📁 省电子竞赛做品
💻 LST
📖 第 1 页 / 共 2 页
字号:
 256   2                      {
 257   3                              if(keyon == 0)  //防止按键冲突,当还有未释放的按键时不对其它按键动作响应   
 258   3                              {
 259   4                              first_row = 0;         //扫描第一行按键
 260   4                              second_row = 1;
 261   4                              M_key = KEY;
 262   4                              if(M_key != 0xff)
 263   4                              {
 264   5                              switch(M_key) 
 265   5                              {
 266   6                                      case 0xfe:
 267   6                                              keynum = 0x00;
 268   6                                              break;
 269   6                                      case 0xfd:
 270   6                                      keynum = 0x01;
 271   6                                              break;
 272   6                                      case 0xfb:
 273   6                                          keynum = 0x02;
 274   6                                              break;
 275   6                                      case 0xf7:
 276   6                                      keynum = 0x03;
 277   6                                              break;
 278   6                                      case 0xef:
 279   6                                              keynum = 0x04;
 280   6                                              break;
 281   6                                      case 0xdf:
 282   6                                              keynum = 0x05;
 283   6                                              break;
 284   6                                      case 0xbf:
 285   6                                              keynum = 0x06;
 286   6                                              break;
 287   6                                      case 0x7f:
 288   6                                              keynum = 0x07;
 289   6                                              break;
 290   6                              }
 291   5                              }
 292   4                              else
 293   4                              {
 294   5                              second_row = 0;     //扫描第二行按键
 295   5                              first_row = 1;
 296   5                              M_key = KEY;
 297   5                              switch(M_key)
C51 COMPILER V8.05a   SYSTHREE_MASTER                                                      06/28/2007 21:08:47 PAGE 6   

 298   5                              {
 299   6                                      case 0xfe:
 300   6                                              keynum = 0x08;
 301   6                                              break;
 302   6                                      case 0xfd:
 303   6                                              keynum = 0x09;
 304   6                                              break;
 305   6                                      case 0xfb:
 306   6                                              keynum = 0x0a;
 307   6                                              break;
 308   6                                      case 0xf7:
 309   6                                              keynum = 0x0b;
 310   6                                              break;
 311   6                                      case 0xef:
 312   6                                              keynum = 0x0c;
 313   6                                              break;
 314   6                                      case 0xdf:
 315   6                                              keynum = 0x0d;
 316   6                                              break;
 317   6                                      case 0xbf:
 318   6                                              keynum = 0x0e;
 319   6                                              break;
 320   6                                      case 0x7f:
 321   6                                              keynum = 0x0f;
 322   6                                              break;
 323   6                              }
 324   5                              }
 325   4                                      getkey = 1; //获得有效按键数值
 326   4                      keyon = 1;  //防止按键冲突,当获得有效按键时将其置1
 327   4                                  setvalue (keynum);
 328   4                      } 
 329   3              } 
 330   2              }
 331   1              else
 332   1              {
 333   2                      first_getkey = 0;
 334   2                      keyon = 0;     //防止按键冲突,当所有的按键都释放时将其清0
 335   2          }
 336   1      }
 337          
 338          /***************************************************
 339                                  数码管显示函数
 340          原型:   void leddisp(void);
 341          功能:  每次调用轮流显示一位数码管
 342          
 343          ****************************************************/
 344          void leddisp(void)
 345          {
 346   1              switch(lednum)  //选择需要显示的数码位
 347   1              {
 348   2                      case 0:
 349   2                      LED1 = segtab[led[0]];
 350   2                      break;
 351   2                      case 1:
 352   2                      LED2 = segtab[led[1]];
 353   2                      break;
 354   2                      case 2:
 355   2                      LED3 = segtab[led[2]];
 356   2                      break;
 357   2                      case 3:
 358   2                      LED4 = segtab[led[3]];
 359   2                      break;
C51 COMPILER V8.05a   SYSTHREE_MASTER                                                      06/28/2007 21:08:47 PAGE 7   

 360   2                      case 4:
 361   2                      LED5 = segtab[led[4]];
 362   2                      break;
 363   2                      case 5:
 364   2                      LED6 = segtab[led[5]];
 365   2                      break;
 366   2                      case 6:
 367   2                      LED7 = segtab[led[6]];
 368   2                      break;
 369   2                      case 7:
 370   2                      LED8 = segtab[led[7]];
 371   2                      break;
 372   2              }
 373   1      
 374   1              if(lednum == 0) //更新需要现实的数码位
 375   1              {
 376   2                      lednum = 7;
 377   2              }
 378   1              else
 379   1              {
 380   2                      lednum = lednum-1;
 381   2              }
 382   1      }  
 383           
 384           
 385          
 386          /*******************************************************************
 387                              延时函数               
 388          函数原型: void  delay(uint8 time_nop);  
 389          功能:       延时time_nop个nop
 390            
 391          ********************************************************************/
 392          void  delay(uint8 time_nop)
 393          {
 394   1              uint8 i;
 395   1              for(i=0;i<time_nop;i++)
 396   1              {
 397   2                      _nop_();        
 398   2              }
 399   1      }
 400           
 401          void setvalue (unsigned char keynum)    {
 402   1      
 403   1       if(state == 0 && keynum == 10)  state = 1;     
 404   1       else if(state == 1 ) { NOset = keynum ;state = 2  ; }
 405   1          else if(state == 2 && keynum >= 0 && keynum <= 9 )  
 406   1              {
 407   2                  state = 2 ; 
 408   2                      temV = temV*10 + keynum;                        
 409   2              
 410   2               }
 411   1               else if(state == 2 && keynum ==13 )  
 412   1                              {
 413   2                                      if(temV<=150 || temV>=20)
 414   2                                      {
 415   3                                        que[qu_i] = NOset; 
 416   3                                        Vset[NOset]= temV;
 417   3                                        qu_i++;
 418   3                                      }
 419   2                                      temV = 0;state = 0 ;
 420   2                              }
 421   1                else {state = 0; temV = 0 ;}
C51 COMPILER V8.05a   SYSTHREE_MASTER                                                      06/28/2007 21:08:47 PAGE 8   

 422   1      
 423   1      
 424   1                if(state != 1 && keynum == 15) lessAlarm = 1 ;
 425   1                              else lessAlarm =0;
 426   1      
 427   1      
 428   1                if(state != 1 && keynum == 11) { qu_i=0;state = 0; temV = 0 ;}
 429   1      
 430   1      
 431   1      }
 432           
 433          
 434          
 435          void sendBuf(uchar i)
 436          {
 437   1              uchar a = 0;
 438   1              if(que[i]<16 )
 439   1              {
 440   2                      a = lessAlarm ? 16:0 ;
 441   2                      a += que[i];
 442   2                      a += 192;
 443   2                      P1_7 = 1;
 444   2                  SBUF = a;
 445   2                      P1_6 = 0;
 446   2              P1_7 = 0;
 447   2      
 448   2              }
 449   1      }
 450          
 451          void setAlarm(uchar b,uchar  a)
 452          {
 453   1      
 454   1      uchar aa = a & 0x10;
 455   1      if(aa == 16)
 456   1      {       switch(b)
 457   2              {
 458   3                case  0: alarm |= 0x01;
 459   3                case  1: alarm |= 0x02;
 460   3                case  2: alarm |= 0x04;
 461   3                case  3: alarm |= 0x08;
 462   3                case  4: alarm |= 0x10;
 463   3                case  5: alarm |= 0x20;
 464   3                case  6: alarm |= 0x40;
 465   3                case  7: alarm |= 0x80;
 466   3                case  8: alarm |= 0x100;
 467   3                case  9: alarm |= 0x200;
 468   3                case  10: alarm |= 0x400;
 469   3                case  11: alarm |= 0x800;
 470   3                case  12: alarm |= 0x1000;
 471   3                case  13: alarm |= 0x2000;
 472   3                case  14: alarm |= 0x4000;
 473   3                case  15: alarm |= 0x8000;
 474   3      
 475   3              }
 476   2      
 477   2      }
 478   1              else 
 479   1                      switch(aa == 0)
 480   1              {
 481   2                case  0: alarm &= 0x0FFFE;
 482   2                case  1: alarm &= 0x0FFFD;
 483   2                case  2: alarm &= 0x0FFFB;
C51 COMPILER V8.05a   SYSTHREE_MASTER                                                      06/28/2007 21:08:47 PAGE 9   

 484   2                case  3: alarm &= 0x0FFF7;
 485   2                case  4: alarm &= 0x0FFEF;
 486   2                case  5: alarm &= 0x0FFDF;
 487   2                case  6: alarm &= 0x0FFBF;
 488   2                case  7: alarm &= 0x0FF7F;
 489   2                case  8: alarm &= 0x0FEFF;
 490   2                case  9: alarm &= 0x0FDFF;
 491   2                case  10: alarm &= 0x0FBFF;
 492   2                case  11: alarm &= 0x0F7FF;
 493   2                case  12: alarm &= 0x0EFFF;
 494   2                case  13: alarm &= 0x0DFFF;
 495   2                case  14: alarm &= 0x0BFFF;
 496   2                case  15: alarm &= 0x07FFF;
 497   2                lessAlarm = 0 ;
 498   2              }        
 499   1      }
 500          
 501          
 502           /*
 503          A \began to set celerate
 504          B  /主站重新设定巡回点
 505          C  
 506          D  enter
 507          E 
 508          F cancel alarm
 509          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1332    ----
   CONSTANT SIZE    =     18    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     70       3
   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 + -