?? 2051.lst
字號:
360 1 {
361 2 //第1次按鍵
362 2 case 1:
363 2 KeyTimeOutFlag=1; //啟動按鍵超時計(jì)數(shù)
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次按鍵進(jìn)入鬧鈴模式
372 2 case 3:
373 2 KeyTimeOutFlag=0; //關(guān)閉按鍵超時計(jì)數(shù)
374 2 TimingSetFlag=1; //進(jìn)入鬧鈴設(shè)置模式
375 2 TimingDisSelectFlag=0;
376 2 UnpressKeyTimeFlag=1; //啟動無按鍵計(jì)時
377 2 SetModeFlag=1;
378 2 break;
379 2 //第4次按鍵時數(shù)跳變(鬧鈴模式)
380 2 case 4:
381 2 UnpressKeyTimeFlag=0;
382 2 j=&TimeData[Hour_n1]; //指針指向時間單元
383 2 ChangeData(j); //調(diào)用增量函數(shù)改變時間值
384 2 break;
385 2 //第5次按鍵分?jǐn)?shù)跳變(鬧鈴模式)
386 2 case 5:
387 2 j=&TimeData[Minute_n1];
388 2 ChangeData(j);
389 2 break;
390 2 //第6次按鍵等待確認(rèn)
391 2 case 6:
392 2 UnpressKeyTimeFlag=1; //啟動無按鍵計(jì)時
393 2 break;
394 2 //第7次按進(jìn)入第2定時時間設(shè)置
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); //調(diào)用增量函數(shù)改變時間值
403 2 break;
404 2 //第9次按鍵分?jǐn)?shù)跳變(鬧鈴模式)
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; //啟動無按鍵計(jì)時
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進(jìn)入校時模式
421 2 case 13:
422 2 SetModeFlag=1;
423 2 break;
424 2 //校時模式第1次按鍵時數(shù)跳變
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次按鍵分?jǐn)?shù)跳變
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 //函數(shù)功能:設(shè)置模式時自動增量改變所設(shè)項(xiàng)目
450 void ChangeData(uchar *x)
451 {
452 1 uchar i;
453 1
454 1 i=*x; //取出數(shù)據(jù)
455 1
456 1 if(AddFlag) //檢測半秒增量標(biāo)志位
457 1 {
458 2 AddFlag=0;
459 2 if((KeyVal==4)||(KeyVal==8)||(KeyVal==14))
460 2 {
461 3 if(++i>=24) //時數(shù)增加
462 3 i=0;
463 3 }
464 2 else if(++i>=60) //分?jǐn)?shù)增加
465 2 i=0;
466 2 }
467 1 *x=i; //保存數(shù)據(jù)
468 1 }
469
470 //函數(shù)功能:清各個相關(guān)控制位返回正常模式
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 //函數(shù)功能:T0中斷服務(wù)子程序(產(chǎn)生秒脈沖等)
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; //設(shè)置模式的增量標(biāo)志位置1
496 2 if(!TimeSetFlag)
497 2 SecondFlashFlag=!SecondFlashFlag; //秒閃脈沖
498 2 }
499 1
500 1 if(TimeT0>=20) //累計(jì)20次為1秒
501 1 {
502 2 TimeT0=0;
503 2 if(!TimeSetFlag)
504 2 SecondFlag=1; //秒位置1
505 2 }
506 1 }
507 //函數(shù)功能:T1中斷服務(wù)子程序(產(chǎn)生鬧鈴聲響)
508 //產(chǎn)生寬度為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)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -