C51 COMPILER V8.02 LEDʱÖÓ 07/22/2014 16:33:38 PAGE 1 C51 COMPILER V8.02, COMPILATION OF MODULE LEDʱÖÓ OBJECT MODULE PLACED IN LEDʱÖÓ.OBJ COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE LEDʱÖÓ.c BROWSE DEBUG OBJECTEXTEND line level source 1 #include 2 #include "ds1302.h" //°üº¬DS1302Í·Îļþ 3 #include "music_two_tiger.h" 4 //#include "AT25F4096.h" 5 sfr P0M1 = 0X93; 6 sfr P0M0 = 0X94; 7 sfr P1M1 = 0X91; 8 sfr P1M0 = 0X92; 9 sfr P2M1 = 0X95; 10 sfr P2M0 = 0X96; 11 #define leddata P0 //¶¨ÒåLEDÊý¾Ý¿Ú 12 13 sbit SET=P2^0; //°´¼ü¶¨Ò壬ÏÂͬ 14 sbit UP=P2^1; 15 sbit DOWN=P2^2; 16 sbit MODE=P2^3; 17 18 sbit led0=P2^7; //LEDλѡ£¬ÒòΪ²¼Ïß²»Êǰ´Ë³Ðò²¼µÄ£¬³ÌÐò¶¨ÒåһϾͿÉÒÔÁË£¬ÏÂͬ 19 sbit led1=P2^6; 20 sbit led2=P2^5; 21 sbit led3=P2^4; 22 23 sbit SYSLED=P1^4; 24 sbit COL=P1^3; 25 26 volatile SYSTEMTIME SysTime; 27 unsigned char s_state = HOU_MIN; 28 //sbit led4=P2^6; 29 //sbit led5=P2^5; 30 //**************º¯ÊýÉùÃ÷***************** 31 void delays(unsigned char); 32 void display(void); 33 void Scan_Key(void); 34 void id_case1_key(); 35 void id_case2_key(); 36 void Set_id(unsigned char ,unsigned char); 37 //*************±äÁ¿¶¨Òå****************** 38 bit If_start_run_ringtime=0; 39 40 char per_run_time = _PER_RUN_TIME; //ÿÊ×Çú×ÓÔËÐÐ2´Î 41 char ring_space_1min = _RING_SPACE_1MIN; //ÿ±é¼ä¸ô1·ÖÖÓ 42 char ring_run_time = _RING_RUN_TIME; //ÖØ¸´5±é 43 char ring_flash_countdown = _RING_FLASH_COUNTDOWN/50; //ÉÁ˸3Ãë 44 45 unsigned char Ringtime_HOU=0xFF,Ringtime_MIN=0xFF,Ringtime_HOU_tmp=0xFF,Ringtime_MIN_tmp=0xFF; 46 unsigned char id=0,timecount=0,re_disp=0,second_time=0; //¶¨ÒåÓõ½µÄ±äÁ¿£¬idΪµ÷ÕûģʽÓ㬲»Îª0ʱ±íʾµ÷Õû -ģʽ£¬µ÷ÕûÄĸöÁ¿ÓÉidֵȷ¶¨ 47 //timecountÓÃÓÚ500ms¶¨Ê±¼ÇÊý£¬Ê±¼äµ½È¡·´flag±ê־룬re_disp¼ÇÊý200´Î¹²10s£¬µ÷Õû״̬ϰ´¼üÎÞ²Ù×÷ -10s×Ô¶¯·µ»ØÕý³£ÏÔʾ״̬ 48 bit hour,minute,second,month,days,years_1,years_2,flag,flag_1302_1s,system_1s_flag; //¶¨Òåλ±äÁ¿£¬hour, -minute,second·Ö±ðΪµ÷ÕûʱÉÁ˸±ê־룬flag 500msÈ¡·´Ò»´Î£¬µ÷ÕûλÉÁ˸¼°Ã°ºÅÉÁ˸Óà 49 unsigned char system_26s_flag; 50 unsigned char set_flash_flag = 0xFF; 51 bit If_play_music = 0; 52 bit If_start_flash = 0; C51 COMPILER V8.02 LEDʱÖÓ 07/22/2014 16:33:38 PAGE 2 53 bit If_Into_set_ringtime = 0; //1½øÈ룬0Í˳ö 54 //unsigned char code tab[]={0x48,0xEE,0x54,0xC4,0xE2,0xC1,0x41,0xEC,0x40,0xC0,0x60}; //LEDÂë±í£¬¸ù¾ÝÓ²¼þÐÞ -¸Ä 55 unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 56 57 unsigned char inittime[7]={0x00,0x00,0x12,0x16,0x07,0x29,0x24}; //³õʼ»¯1302ʱÓõ½µÄ³õʼ»¯Êý¾Ý Äê20 -14-1990=24 58 // Ãë ·ÖÖÓ Ð¡Ê± ÈÕ Ô ÐÇÆÚ Äê 59 /* 60 void t0(void) interrupt 1 using 0 //Öжϴ¦Àí³ÌÐò£¬Ö÷ÒªÓÃÓÚÈ¡·´±ê־룬·µ»ØÕý³£ÏÔʾ״̬ 61 { 62 TH0=(65535-50000)/256; //50ms¶¨Ê± 63 TL0=(65535-50000)%256; 64 timecount++;re_disp++;second_time++; 65 66 if(timecount == 9) //10*50ms == 500ms 67 { 68 flag=~flag; 69 timecount = 0; 70 } 71 if(second_time == 19) //20*50ms == 1000ms 72 { 73 flag_1302_1s=~flag_1302_1s; 74 second_time = 0; 75 76 system_26s_flag++; 77 if(system_26s_flag > 25) system_26s_flag = 0; 78 } 79 80 if(re_disp>200){re_disp=0;if(id)id=0;} 81 }*/ 82 void delays(unsigned char k) //ÑÓʱº¯Êý 83 { 84 1 unsigned char i,j; 85 1 for(i=0;imax) item=mini; 365 1 if(item2)set_i=0; //id¼Ó1£¬ºóÃæ¸ù¾ÝidÖµ¶ÔÓ¦µ÷ÕûÏîÄ¿ 452 3 id = set_i; 453 3 s_state=SET_HOU_MIN; 454 3 } 455 2 if(id==0){hour=0;minute=0;set_ringtime_case0();} //¸ù¾ÝidÖµÌøµ½ÏàÓ¦´¦Àíº¯Êý 456 2 if(id==1){hour=1;set_ringtime_case1();} //idΪ1£¬Ñ¡Ôñµ÷ÕûСʱ룬ÉÁ˸±ê־λÖÃ1£¬È»ºóÌøµ½¼üÅÌ´¦Àíº¯Ê -ý£¬ÏÂͬ 457 2 else if(id==2){hour=0;minute=1;set_ringtime_case1();} 458 2 } 459 1 460 1 } 461 462 void Scan_Key(void) //¼üÅ̼ì²âº¯Êý 463 { 464 1 display(); //³ÌÐò¿ªÍ·µ÷ÓÃÏÔʾº¯Êý 465 1 if(!SET) 466 1 { 467 2 while(!SET)display(); //µÈ´ý°´¼üÊÍ·Å£¬ÈçÒ»Ö±°´ÏÂÒ»Ö±µ÷ÓÃÏÔʾº¯Êý£¬·ÀÖ¹ÏÔʾÖÐ¶Ï 468 2 re_disp=0; //Çå³ý¼ÇÊý£¬ÖØÐ¿ªÊ¼10s¶¨Ê± 469 2 id++;if(id>7)id=0; //id¼Ó1£¬ºóÃæ¸ù¾ÝidÖµ¶ÔÓ¦µ÷ÕûÏîÄ¿ 470 2 switch(id) 471 2 { 472 3 case 0: s_state=HOU_MIN;break; 473 3 case 1: s_state=HOU_MIN;break; 474 3 case 2: s_state=HOU_MIN;break; 475 3 case 3: s_state=MON_DAY;break; C51 COMPILER V8.02 LEDʱÖÓ 07/22/2014 16:33:38 PAGE 9 476 3 case 4: s_state=MON_DAY;break; 477 3 case 5: s_state=YEAR_S;break; 478 3 case 6: s_state=YEAR_S;break; 479 3 case 7: s_state=SET_HOU_MIN;break; 480 3 default:break; 481 3 } 482 2 } 483 1 484 1 switch(id) 485 1 { 486 2 case 0: hour=0;minute=0;second=0;month=0;days=0;years_1=0;years_2=0;id_case2_key();break; //¸ù¾ÝidÖµÌøµ -½ÏàÓ¦´¦Àíº¯Êý 487 2 case 1: hour=1;id_case1_key();break; //idΪ1£¬Ñ¡Ôñµ÷ÕûСʱ룬ÉÁ˸±ê־λÖÃ1£¬È»ºóÌøµ½¼üÅÌ´¦Àíº¯Êý£¬Ï -Âͬ 488 2 case 2: hour=0;minute=1;id_case1_key();break; 489 2 case 3: minute=0;month=1;id_case1_key();break; 490 2 case 4: month=0;days=1;id_case1_key();break; 491 2 case 5: days=0;years_1=1;id_case1_key();break; 492 2 case 6: years_1=0;years_2=1;id_case1_key();break; 493 2 case 7: years_2=0;Into_set_ringtime();break; 494 2 default:break; 495 2 } 496 1 //if(id==3){minute=0;second=1;id_case1_key();} 497 1 } 498 void id_case1_key(void) //¼üÅÌ´¦Àíº¯Êý£¬Ö»Óа´ÏÂset¼üʱ²Å»á½øÈ룬 499 { 500 1 display(); 501 1 if (!DOWN) //¼õÉÙ 502 1 { 503 2 while(!DOWN)display(); //µÈ´ý°´¼üÊÍ·Å£¬ÈçÒ»Ö±°´ÏÂÒ»Ö±µ÷ÓÃÏÔʾº¯Êý£¬·ÀÖ¹ÏÔʾÖÐ¶Ï 504 2 re_disp=0; //Çå³ý¼ÇÊý£¬ÖØÐ¿ªÊ¼10s¶¨Ê± 505 2 Set_id(id,0); //Ìøµ½¼Ó¼õÅжϺ¯Êý£¬ÏÂͬ£¬ 506 2 } 507 1 if (!UP) //Ôö¼Ó 508 1 { 509 2 while(!UP)display(); 510 2 re_disp=0; 511 2 Set_id(id,1); 512 2 } 513 1 } 514 void id_case2_key(void) //¼üÅÌ´¦Àíº¯Êý£¬Ö»ÓÐid==0ʱ²Å»á½øÈ룬 515 { 516 1 static char DOWN_key_add = HOU_MIN; 517 1 display(); 518 1 if (!DOWN) // 519 1 { 520 2 while(!DOWN)display(); //µÈ´ý°´¼üÊÍ·Å£¬ÈçÒ»Ö±°´ÏÂÒ»Ö±µ÷ÓÃÏÔʾº¯Êý£¬·ÀÖ¹ÏÔʾÖÐ¶Ï 521 2 DOWN_key_add ++; 522 2 if(DOWN_key_add > 2) DOWN_key_add = 0; 523 2 if(DOWN_key_add == 0) s_state = HOU_MIN; 524 2 else if(DOWN_key_add == 1) s_state = MON_DAY_HOU_MIN; 525 2 else if(DOWN_key_add == 2) s_state = MIN_SECOND; 526 2 } 527 1 if (!UP) // 528 1 { 529 2 while(!UP)display(); //µÈ´ý°´¼üÊÍ·Å£¬ÈçÒ»Ö±°´ÏÂÒ»Ö±µ÷ÓÃÏÔʾº¯Êý£¬·ÀÖ¹ÏÔʾÖÐ¶Ï 530 2 DOWN_key_add --; 531 2 if(DOWN_key_add < 0) DOWN_key_add = 2; 532 2 if(DOWN_key_add == 0) s_state = HOU_MIN; 533 2 else if(DOWN_key_add == 1) s_state = MON_DAY_HOU_MIN; 534 2 else if(DOWN_key_add == 2) s_state = MIN_SECOND; 535 2 } C51 COMPILER V8.02 LEDʱÖÓ 07/22/2014 16:33:38 PAGE 10 536 1 if (!MODE) 537 1 { 538 2 while(!MODE)display(); //µÈ´ý°´¼üÊÍ·Å£¬ÈçÒ»Ö±°´ÏÂÒ»Ö±µ÷ÓÃÏÔʾº¯Êý£¬·ÀÖ¹ÏÔʾÖÐ¶Ï 539 2 Into_set_ringtime(); 540 2 } 541 1 } 542 //¸ù¾ÝÑ¡Ôñµ÷ÕûÏàÓ¦ÏîÄ¿²¢Ð´ÈëDS1302 543 void Set_id(unsigned char sel,unsigned char sel_1) //Ö´Ðе÷ÕûÏîÄ¿µÄº¯Êý 544 { 545 1 signed char max,mini,address,item; 546 1 switch(sel) 547 1 { 548 2 case 1: address=DS1302_HOUR; max=23;mini=0;break; //Сʱ //¸ù¾Ýidֵȷ¶¨Òªµ÷ÕûµÄÏ²¢È·¶¨µ÷ÕûÉÏÏÂÏÞ£¬Ï -Âͬ 549 2 case 2: address=DS1302_MINUTE; max=59;mini=0;break; //·ÖÖÓ 550 2 case 3: address=DS1302_MONTH; max=12;mini=1;break; //Ô 551 2 case 4: address=DS1302_DAY; max=31;mini=0;break; //ÈÕ 552 2 case 5: address=DS1302_YEAR; max=20;mini=20;break; //Äê20 553 2 case 6: address=DS1302_YEAR; max=99;mini=0;break; //Äê14 554 2 default:break; 555 2 } 556 1 //if(sel==3) {address=sec; max=0;mini=0;} //Ãë 557 1 558 1 item=Read1302(address|DS1302_READ)/16*10+Read1302(address|DS1302_READ)%16; //´ÓÏàÓ¦µÄµØÖ·¶ÁÈ¡µ±Ç°Êý¾Ý²¢ -ת»»ÎªÊ®½øÖÆ 559 1 if (sel_1==0) item--; else item++; //È·¶¨ÊǶÔÏîÄ¿¼Ó»¹ÊǼõ£¬²¢¶ÔÔ½ÏÞ´¦Àí 560 1 if(item>max) item=mini; 561 1 if(item= 9) //10*50ms == 500ms 599 1 { 600 2 flag=~flag; 601 2 if(set_flash_flag > 3) set_flash_flag = 0; 602 2 if(If_start_flash == 1) set_flash_flag ++; 603 2 timecount = 0; 604 2 } 605 1 if(second_time >= 19) //20*50ms == 1000ms 606 1 { 607 2 second_time = 0; 608 2 system_1s_flag=~system_1s_flag; //ϵͳ¶ÁÃë1302 609 2 610 2 system_26s_flag++; 611 2 if(system_26s_flag > 25) system_26s_flag = 0; 612 2 } 613 1 614 1 if(re_disp>200){re_disp=0;if(id)id=0;} 615 1 } 616 617 void InitialT0T1(void) // 618 { 619 1 TMOD=0x11; //³õʼ»¯¶¨Ê±Æ÷ ·½Ê½2 ²¨ÌØÂÊ·¢ÉúÆ÷ 620 1 //TH0=0xFF; //T0¸ß°Ëλ 621 1 //TL0=0xFF; //T0µÍ°Ëλ 622 1 TH1=(65535-50000)/256; //T1¸ß°Ëλ 623 1 TL1=(65535-50000)%256; //T1µÍ°Ëλ 624 1 625 1 EA=1; //×ÜÖжϿª¹Ø 626 1 ET0=1; //T0ÖÐ¶Ï 627 1 //TR0=0; //¶¨Ê±Æ÷T0 ²»¿ªÊ¼¼ÆÊ± 628 1 ET1=1; //T1ÖÐ¶Ï 629 1 TR1=1; //¶¨Ê±Æ÷T1 ¿ªÊ¼¼ÆÊ± 630 1 } 631 /* 632 void InitialT1(void) // 633 { 634 TMOD|=0x10; //³õʼ»¯¶¨Ê±Æ÷ ·½Ê½2 ²¨ÌØÂÊ·¢ÉúÆ÷ 635 TH1=(65535-50000)/256; //T0¸ß°Ëλ 636 TL1=(65535-50000)%256; //T0µÍ°Ëλ 637 EA=1; //×ÜÖжϿª¹Ø 638 ET1=1; //T0ÖÐ¶Ï 639 TR1=1; //¶¨Ê±Æ÷T0 ¿ªÊ¼¼ÆÊ± 640 }*/ 641 void main() //Ö÷º¯Êý 642 { 643 1 //ÅäÖò¥·ÅÆ÷T0 ģʽ3Ï ռÓÃT1×ÊÔ´£¬ËùÒÔ Ö»ÄÜÓÃT1£¨²¨ÌØÂÊ·¢ÉúÆ÷£© 644 1 //ÅäÖö¨Ê±Æ÷T1 645 1 //InitialT1(); 646 1 InitialT0T1(); 647 1 //³õʼ»¯£¬²¢Æô¶¯DS1302µÄʱÖÓ 648 1 Write1302(0x90,0xa0);//¹Ø±Õ³äµç¶þ¼¶¹Ü£¬²»ÄÜ¶Ôºó±¸µç³Ø½øÐгäµç£¬·ÀÖ¹·¢ÕÍ£¬Ô­À´µÄ³ÌÐòÊÇ´ò¿ªµÄÇë¹Ø±Õ 649 1 Write1302(0x8e,0x80);//д±£»¤£¬½ûֹд²Ù×÷ 650 1 Initial_DS1302(); 651 1 if(!UP&!DOWN)Set1302(inittime); //Èç¹ûͬʱ°´ÏÂUPºÍDOWN¼üÔò³õʼ»¯1302£¬¸ÃÓï¾äÔÚwhile(1)ǰ£¬Ö»Ö´ÐÐÒ»´Î£¬ -ÐèÒª¸´Î»£¬·ÀÖ¹Îó²Ù×÷ 652 1 //ÅäÖÃP0¿Ú£¬È«²¿ÍÆÍìÊä³ö 01 653 1 P0M0 = 0x00; 654 1 P0M1 = 0xFF; 655 1 //ÑÓʱÎȶ¨ 656 1 SYSLED = 0; //ϵͳµÆ¿ª C51 COMPILER V8.02 LEDʱÖÓ 07/22/2014 16:33:38 PAGE 12 657 1 delays(100); 658 1 SYSLED = 1; //ϵͳµÆ¹Ø 659 1 while(1) 660 1 { 661 2 SYSLED = system_1s_flag; //ϵͳµÆÉÁ 662 2 DS1302_GetTime(&SysTime); //»ñȡʱ¼ä 663 2 Scan_Key(); //¼üÅ̼ì²âºÍÏÔʾ 664 2 if(!P3_0) 665 2 { 666 3 while(!P3_0)display(); //µÈ´ý°´¼üÊÍ·Å£¬ÈçÒ»Ö±°´ÏÂÒ»Ö±µ÷ÓÃÏÔʾº¯Êý£¬·ÀÖ¹ÏÔʾÖÐ¶Ï 667 3 If_play_music = 1; 668 3 play_2tigers(); 669 3 If_play_music = 0; 670 3 } 671 2 if(If_start_run_ringtime) 672 2 { 673 3 if(Ringtime_HOU == SysTime.Hour && Ringtime_MIN == SysTime.Minute) 674 3 { 675 4 if(ring_run_time--==0) //µ½ÁË´ÎÊý£¬²»ÔÙ²¥·Å 676 4 { 677 5 Ringtime_HOU = 0xFF; 678 5 Ringtime_MIN = 0xFF; 679 5 If_start_run_ringtime = 0; 680 5 ring_run_time = _RING_RUN_TIME; //³õʼ»¯Ò»Ï Ï¸ö5±éÔËÐÐ £¬²»È»ring_run_time--ºó£¬0xFFÒ»Ö±¼ä¸ôÏì 681 5 } 682 4 else //֨װ£¬¼ä¸ôx·ÖÖÓ ring_space_1min 683 4 { 684 5 Ringtime_HOU_tmp = Ringtime_HOU_tmp + (Ringtime_MIN_tmp + ring_space_1min)/59; 685 5 Ringtime_MIN_tmp = (Ringtime_MIN_tmp + ring_space_1min)%59; 686 5 Ringtime_HOU = Ringtime_HOU_tmp/10*16+Ringtime_HOU_tmp%10; //16½øÖƱ£´æ 687 5 Ringtime_MIN = Ringtime_MIN_tmp/10*16+Ringtime_MIN_tmp%10; 688 5 If_start_run_ringtime = 1; 689 5 } 690 4 If_play_music = 1; 691 4 play_2tigers(); 692 4 If_play_music = 0; 693 4 } 694 3 } 695 2 } 696 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 4123 ---- CONSTANT SIZE = 186 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 51 9 IDATA SIZE = ---- ---- BIT SIZE = 14 ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)