📄 2051.lst
字号:
360 1 {
361 2 //第1次按键
362 2 case 1:
363 2 KeyTimeOutFlag=1; //启动按键超时计数
364 2 TimingSetFlag=1;
365 2 break;
C51 COMPILER V9.01 2051 09/19/2012 10:47:35 PAGE 7
366 2 //第2次按键
367 2 case 2:
368 2 TimingDisSelectFlag=1; //显示第2定时时间
369 2 TimingFunFlag=1;
370 2 break;
371 2 //第3次按键进入闹铃模式
372 2 case 3:
373 2 KeyTimeOutFlag=0; //关闭按键超时计数
374 2 TimingSetFlag=1; //进入闹铃设置模式
375 2 TimingDisSelectFlag=0;
376 2 UnpressKeyTimeFlag=1; //启动无按键计时
377 2 SetModeFlag=1;
378 2 break;
379 2 //第4次按键时数跳变(闹铃模式)
380 2 case 4:
381 2 UnpressKeyTimeFlag=0;
382 2 j=&TimeData[Hour_n1]; //指针指向时间单元
383 2 ChangeData(j); //调用增量函数改变时间值
384 2 break;
385 2 //第5次按键分数跳变(闹铃模式)
386 2 case 5:
387 2 j=&TimeData[Minute_n1];
388 2 ChangeData(j);
389 2 break;
390 2 //第6次按键等待确认
391 2 case 6:
392 2 UnpressKeyTimeFlag=1; //启动无按键计时
393 2 break;
394 2 //第7次按进入第2定时时间设置
395 2 case 7:
396 2 TimingDisSelectFlag=1;
397 2 break;
398 2 //
399 2 case 8:
400 2 UnpressKeyTimeFlag=0;
401 2 j=&TimeData[Hour_n2]; //指针指向时间单元
402 2 ChangeData(j); //调用增量函数改变时间值
403 2 break;
404 2 //第9次按键分数跳变(闹铃模式)
405 2 case 9:
406 2 j=&TimeData[Minute_n2];
407 2 ChangeData(j);
408 2 break;
409 2 //
410 2 case 10:
411 2 UnpressKeyTimeFlag=1; //启动无按键计时
412 2 break;
413 2 //第11次按键完成并返回正常模式
414 2 case 11:
415 2 ClearFlag();
416 2 break;
417 2 //
418 2 case 12:
419 2 break;
420 2 //长按键后键值=13进入校时模式
421 2 case 13:
422 2 SetModeFlag=1;
423 2 break;
424 2 //校时模式第1次按键时数跳变
425 2 case 14:
426 2 j=&TimeData[Hour];
427 2 ChangeData(j);
C51 COMPILER V9.01 2051 09/19/2012 10:47:35 PAGE 8
428 2 break;
429 2 //校时模式第2次按键分数跳变
430 2 case 15:
431 2 j=&TimeData[Minute];
432 2 ChangeData(j);
433 2 break;
434 2 //校时模式第3次按键等待对时
435 2 case 16:
436 2 TimeData[Second]=0;
437 2 break;
438 2 //校时模式第4次按键完成并返回正常模式
439 2 case 17:
440 2 TimeSetFlag=0;
441 2 SetModeFlag=0;
442 2 KeyVal=0;
443 2 break;
444 2 default:
445 2 break;
446 2 }
447 1 }
448
449 //函数功能:设置模式时自动增量改变所设项目
450 void ChangeData(uchar *x)
451 {
452 1 uchar i;
453 1
454 1 i=*x; //取出数据
455 1
456 1 if(AddFlag) //检测半秒增量标志位
457 1 {
458 2 AddFlag=0;
459 2 if((KeyVal==4)||(KeyVal==8)||(KeyVal==14))
460 2 {
461 3 if(++i>=24) //时数增加
462 3 i=0;
463 3 }
464 2 else if(++i>=60) //分数增加
465 2 i=0;
466 2 }
467 1 *x=i; //保存数据
468 1 }
469
470 //函数功能:清各个相关控制位返回正常模式
471 void ClearFlag(void)
472 {
473 1 UnpressKeyTimeFlag=0;
474 1 KeyTimeOutFlag=0;
475 1 SetModeFlag=0;
476 1 TimingSetFlag=0;
477 1 TimingDisSelectFlag=0;
478 1 KeyVal=0; //返回正常模式
479 1 }
480
481
482 //函数功能:T0中断服务子程序(产生秒脉冲等)
483
484 void T0_intermit(void) interrupt 1
485 {
486 1 uint TimeT0;
487 1
488 1 TH0=(-CYCLE0)/256;
489 1 TL0=(-CYCLE0)%256;
C51 COMPILER V9.01 2051 09/19/2012 10:47:35 PAGE 9
490 1
491 1 TimeT0++;
492 1
493 1 if(TimeT0%10==0)
494 1 {
495 2 AddFlag=1; //设置模式的增量标志位置1
496 2 if(!TimeSetFlag)
497 2 SecondFlashFlag=!SecondFlashFlag; //秒闪脉冲
498 2 }
499 1
500 1 if(TimeT0>=20) //累计20次为1秒
501 1 {
502 2 TimeT0=0;
503 2 if(!TimeSetFlag)
504 2 SecondFlag=1; //秒位置1
505 2 }
506 1 }
507 //函数功能:T1中断服务子程序(产生闹铃声响)
508 //产生宽度为100ms和600ms的方波
509 void T1_intermit(void) interrupt 3
510 {
511 1 uchar TimeT1;
512 1
513 1 TH1=(-CYCLE1)/256;
514 1 TL1=(-CYCLE1)%256;
515 1
516 1 TimeT1++;
517 1
518 1 if(TimeT1%5==0)
519 1 BeeMusicFlag=!BeeMusicFlag; //100ms
520 1
521 1 if(TimeT1>=30)
522 1 {
523 2 TimeT1=0;
524 2 BeeSpaceFlag=!BeeSpaceFlag; //600ms
525 2 }
526 1 }
527
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 884 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 11
IDATA SIZE = ---- ----
BIT SIZE = 14 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -