📄 key.lst
字号:
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 + -