📄 time.lst
字号:
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 8
428 5 break;
429 5
430 5 case 12: //秒高位
431 5 t=(Time[0]>>4)&0x07;
432 5 if(t<5)t++;
433 5 else t=0;
434 5 Time[0]&=0x0F;
435 5 Time[0]|=t<<4;
436 5 break;
437 5
438 5 case 13: //秒低位
439 5 t=Time[0]&0x0F;
440 5 if(t<9)t++;
441 5 else t=0;
442 5 Time[0]&=0xF0;
443 5 Time[0]|=t;
444 5 break;
445 5 }
446 4 KeyDown&=~KEY7;
447 4 }
448 3 }
449 2
450 2 if(SystemTick-OldTick>=70)
451 2 {
452 3 NeedRefresh=1;
453 3 OldTick=SystemTick;
454 3 }
455 2 if(NeedRefresh)
456 2 {
457 3 NeedRefresh=0;
458 3 DateToString();
459 3 on=!on;
460 3 if(!on)
461 3 {
462 4 switch(SetDigit)
463 4 {
464 5 case 1: DispBuffer[2]=' ';break;
465 5 case 2: DispBuffer[3]=' ';break;
466 5 case 3: DispBuffer[5]=' ';break;
467 5 case 4: DispBuffer[6]=' ';break;
468 5 case 5: DispBuffer[8]=' ';break;
469 5 case 6: DispBuffer[9]=' ';break;
470 5 case 7: DispBuffer[12]=' ';break;
471 5 default: break;
472 5 }
473 4 }
474 3 Prints(DispBuffer);
475 3 Prints(" ");
476 3 #ifdef LCD //如果有LCD,则同时显示到LCD上
477 3 if(DispStatus==DISP_SET_TIME)
478 3 {
479 4 LcdCls();
480 4 LcdSetPosition(0x02);
481 4 LcdPrints(DispBuffer);
482 4 }
483 3 #endif
484 3
485 3 TimeToString();
486 3 if(!on)
487 3 {
488 4 switch(SetDigit)
489 4 {
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 9
490 5 case 8: DispBuffer[0]=' ';break;
491 5 case 9: DispBuffer[1]=' ';break;
492 5 case 10: DispBuffer[3]=' ';break;
493 5 case 11: DispBuffer[4]=' ';break;
494 5 case 12: DispBuffer[6]=' ';break;
495 5 case 13: DispBuffer[7]=' ';break;
496 5 default: break;
497 5 }
498 4 }
499 3 Prints(DispBuffer);
500 3 Prints("\r\n");
501 3 #ifdef LCD //如果有LCD,则同时显示到LCD上
502 3 if(DispStatus==DISP_SET_TIME)
503 3 {
504 4 LcdSetPosition(0x44);
505 4 LcdPrints(DispBuffer);
506 4 }
507 3 #endif
508 3 }
509 2 }
510 1 }
511 ////////////////////////End of function//////////////////////////////
512
513 /********************************************************************
514 函数功能:保存闹钟时间和报警温度函数。
515 入口参数:无。
516 返 回:无。
517 备 注:无。
518 ********************************************************************/
519 void SaveAlarmClock(void)
520 {
521 1 uint8 i;
522 1 for(i=0;i<4;i++)
523 1 {
524 2 EepromWriteByte(0xA0,i,AlarmTime[i]);
525 2 }
526 1 EepromWriteByte(0xA0,4,AlarmTemperature);
527 1 }
528 ////////////////////////End of function//////////////////////////////
529
530 /********************************************************************
531 函数功能:读闹钟时间和报警温度参数。
532 入口参数:无。
533 返 回:无。
534 备 注:无。
535 ********************************************************************/
536 void ReadAlarmClock(void)
537 {
538 1 uint8 i;
539 1 for(i=0;i<4;i++)
540 1 {
541 2 AlarmTime[i]=EepromReadByte(0xA0,i);
542 2 }
543 1 AlarmTemperature=EepromReadByte(0xA0,4);
544 1 }
545 ////////////////////////End of function//////////////////////////////
546
547 /********************************************************************
548 函数功能:设置闹钟时钟和报警温度函数。
549 入口参数:无。
550 返 回:无。
551 备 注:无。
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 10
552 ********************************************************************/
553 void SetAlarmClock(void)
554 {
555 1 uint8 SetDigit=8;
556 1 uint8 on=0;
557 1 uint8 TimeModified=0;
558 1 uint8 t;
559 1 uint8 NeedRefresh;
560 1 uint16 OldTick;
561 1
562 1 Prints("Set alarm clock: ");
563 1 #ifdef LCD
564 1 LcdCls();
565 1 LcdPrints("Set alarm clock:");
566 1 #endif
567 1 while(1)
568 1 {
569 2 if(KeyDown) //有按键按下
570 2 {
571 3 if(KeyDown&(KEY1|KEY2|KEY3|KEY4))return; //按下这些键放弃设置闹钟,返回
572 3 if(KeyDown&KEY8)
573 3 {
574 4 if(TimeModified) //如果对闹钟时间做了修改
575 4 {
576 5 BeepOn(); //蜂鸣器响,提示正在保存设置
577 5 SaveAlarmClock(); //保存设置的时间
578 5 BeepOff();
579 5 }
580 4 DispStatus=DISP_TIME; //切换回时间显示状态
581 4 KeyDown&=~KEY8;
582 4 return;
583 4 }
584 3
585 3 if(KeyDown&KEY5) //切换调整位
586 3 {
587 4 SetDigit++; //切换到下一位
588 4 if(SetDigit>=17)SetDigit=8; //到最后一位,返回
589 4 KeyDown&=~KEY5;
590 4 NeedRefresh=1; //需要刷新显示
591 4 }
592 3
593 3 if(KeyDown&KEY6) //减1调整
594 3 {
595 4 TimeModified=1; //修改了时钟
596 4 NeedRefresh=1; //需要刷新显示
597 4 switch(SetDigit) //调整不同的位
598 4 {
599 5 case 8: //小时高位
600 5 t=(AlarmTime[2]>>4)&0x03;
601 5 if(t>0)t--;
602 5 else t=2;
603 5 AlarmTime[2]&=0x0F;
604 5 AlarmTime[2]|=t<<4;
605 5 break;
606 5
607 5 case 9: //小时低位
608 5 t=AlarmTime[2]&0x0F;
609 5 if(((AlarmTime[2]>>4)&0x03)==2)
610 5 {
611 6 if(t>0)t--;
612 6 else t=3;
613 6 }
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 11
614 5 else
615 5 {
616 6 if(t>0)t--;
617 6 else t=9;
618 6 }
619 5 AlarmTime[2]&=0xF0;
620 5 AlarmTime[2]|=t;
621 5 break;
622 5
623 5 case 10: //分高位
624 5 t=(AlarmTime[1]>>4)&0x07;
625 5 if(t>0)t--;
626 5 else t=5;
627 5 AlarmTime[1]&=0x0F;
628 5 AlarmTime[1]|=t<<4;
629 5 break;
630 5
631 5 case 11: //分低位
632 5 t=AlarmTime[1]&0x0F;
633 5 if(t>0)t--;
634 5 else t=9;
635 5 AlarmTime[1]&=0xF0;
636 5 AlarmTime[1]|=t;
637 5 break;
638 5
639 5 case 12: //秒高位
640 5 t=(AlarmTime[0]>>4)&0x07;
641 5 if(t>0)t--;
642 5 else t=5;
643 5 AlarmTime[0]&=0x0F;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -