⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dianzi.lst

📁 实验学习型电子钟包括红外线控制密码da控制led亮度ad转换语音转换闹铃
💻 LST
📖 第 1 页 / 共 4 页
字号:
 490   2                                                  key10=1;
 491   2                                                  Read_flash(0x8008, 6, cunmima);
 492   2                                                  do{
 493   3                                                             k = scan();
 494   3                                                             if(k == 10){goto exit;}
 495   3                                                             if(k==12)DispBuf[--i] = 10;
 496   3                                                             desips7219();
 497   3                                                             if( k >=0 && k<= 9)
 498   3                                                             {
 499   4                                                                        DispBuf[i++]= k;
 500   4                                                                        desips7219();         
 501   4                                                             }
 502   3      
 503   3                                                  }while(i<6);
 504   2                  
 505   2                                                  for( i = 0 ; i < 6 ; i++ )
 506   2                                                  {
 507   3                                                             if( cunmima[i] != DispBuf[i] )
 508   3                                                             { 
 509   4                                                                        if( Cnt++ > 2)
 510   4                                                                        {Cnt=0;    goto exit;}
 511   4                                                                        goto setcode;
 512   4                                                             }
 513   3                                                  }
 514   2                                                  PassOk = 1;
 515   2                                                  break;
 516   2                            case 11:  //设定时间
 517   2                                                  if( PassOk == 0)
 518   2                                                             goto exit ;
 519   2                          Cnt = 0;
 520   2                            settime:DispBuf[0]= 10;          
 521   2                                                  DispBuf[1]= 10;
 522   2                                                  DispBuf[2]= 10;
 523   2                                                  DispBuf[3]= 10;
 524   2                                                  DispBuf[4]= 10;
 525   2                                                  DispBuf[5]= 10;
 526   2                                                  i = 0;
 527   2                                                  desips7219();
 528   2                                                  
 529   2                                                  do{
 530   3                                                             k = scan();
 531   3                                                             if(k == 11){PassOk = 0 ;goto exit;}
 532   3                                                             if( k == 12 )
 533   3                                                                        DispBuf[--i] = 10;
 534   3                                                             desips7219();
 535   3                                                             if( k >=0 && k<= 9)
 536   3                                                             {
 537   4                                                                        DispBuf[i++]= k;
 538   4                                                                        desips7219();         
 539   4                                                             }
 540   3      
 541   3                                                  }while(i<6);
 542   2                                                  if( DispBuf[0]*10 + DispBuf[1] >23 ||
 543   2                                                             DispBuf[2]*10 + DispBuf[3] > 59||
 544   2                                                             DispBuf[4]*10 + DispBuf[5] > 59 )
 545   2                                                  {                        
 546   3                                                             if( Cnt++ >2 )
 547   3                                                                        goto exit;
 548   3                                                             else
 549   3                                                                        goto settime;
 550   3                                                  }
 551   2                                                  else
C51 COMPILER V7.06   DIANZI                                                                08/21/2008 22:03:20 PAGE 10  

 552   2                                                  {          SetTime(DispBuf[0]*16+DispBuf[1],
 553   3                                                                            DispBuf[2]*16+DispBuf[3],    
 554   3                                                                                   DispBuf[4]*16+DispBuf[5]);
 555   3                                                             PassOk = 0 ;key10=0;
 556   3                                                  }break;
 557   2                            case 12:
 558   2              case 13: //修改密码
 559   2                                                  if( PassOk == 0)
 560   2                                                             goto exit ;
 561   2                          Cnt = 0;
 562   2                                    DispBuf[0]= 10;          
 563   2                                                  DispBuf[1]= 10;
 564   2                                                  DispBuf[2]= 10;
 565   2                                                  DispBuf[3]= 10;
 566   2                                                  DispBuf[4]= 10;
 567   2                                                  DispBuf[5]= 10;
 568   2                                                  i = 0;
 569   2                      desips7219();
 570   2                                                  do{
 571   3                                                             k = scan();
 572   3                                                  if(k == 13){PassOk = 0 ;goto exit;}
 573   3                                                             if(k==12)DispBuf[--i] = 10;
 574   3                                                             desips7219();
 575   3                                                             if( k >=0 && k<= 9)
 576   3                                                             {
 577   4                                                                        DispBuf[i++]= k;
 578   4                                                                        desips7219();         
 579   4                                                             }
 580   3      
 581   3                                                  }while(i<6);
 582   2                      for(i = 0;i < 6;i++)
 583   2                                                  {
 584   3                                                             cunmima[i]=DispBuf[i];
 585   3                                                  }
 586   2                     Write_flash(0x8008, 6, cunmima);
 587   2                     delay( 5 );
 588   2                               PassOk = 0 ;
 589   2                     break;
 590   2          case 14://设置闹铃
 591   2                 time:      
 592   2                                       if( PassOk == 0)
 593   2                                                             goto exit ;
 594   2                          Cnt = 0;
 595   2                             DispBuf[0]= 10;      
 596   2                                                  DispBuf[1]= 10;
 597   2                                                  DispBuf[2]= 10;
 598   2                                                  DispBuf[3]= 10;
 599   2                                                  DispBuf[4]= 10;
 600   2                                                  DispBuf[5]= 10;
 601   2                                                  i = 0;
 602   2                                                  desips7219();
 603   2                                                  do{
 604   3                                                             k = scan();
 605   3                                                             if(k ==14){PassOk = 0 ;goto exit;}
 606   3                                                             if(k==12)DispBuf[--i] = 10;
 607   3                                                             desips7219();
 608   3                                                             if( k >=0 && k<= 9)
 609   3                                                             {
 610   4                                                                        DispBuf[i++]= k;
 611   4                                                                        desips7219();         
 612   4                                                             }
 613   3      
C51 COMPILER V7.06   DIANZI                                                                08/21/2008 22:03:20 PAGE 11  

 614   3                                                  }while(i<4);keybuttflag=0;
 615   2                                                  for(i = 0;i < 4;i++)
 616   2                                                   { 
 617   3                                                             naoling[nex][i]=DispBuf[i];
 618   3                                                   }
 619   2                                                  nex++;
 620   2                                                  if(nex==5)
 621   2                      {
 622   3                                                  nex = 0;
 623   3                                    
 624   3                                                  PassOk = 0 ;
 625   3                                                  }
 626   2                                       
 627   2                      else goto time;
 628   2                      break; 
 629   2                            case 15:                                       
 630   2                            default : break;
 631   2                 }
 632   1      
 633   1      
 634   1      exit:;
 635   1      }
 636          /******************************************************
 637                      鬧鈴組
 638          *******************************************************/
 639          void naozhong()//闹钟
 640          {
 641   1       uchar nex;
 642   1       
 643   1       if(keybuttflag ==0) 
 644   1      
 645   1       {
 646   2        
 647   2       for(nex = 0;nex <5;nex++)
 648   2        {
 649   3         if(  naoling[nex][0]==DispBuf[0]&&
 650   3              naoling[nex][1]==DispBuf[1]&&
 651   3                            naoling[nex][2]==DispBuf[2]&&
 652   3                     naoling[nex][3]==DispBuf[3])
 653   3          {    
 654   4                   delay(5);
 655   4                  if(naoling[nex][0]==DispBuf[0]&&
 656   4              naoling[nex][1]==DispBuf[1]&&
 657   4                            naoling[nex][2]==DispBuf[2]&&
 658   4                     naoling[nex][3]==DispBuf[3])
 659   4      
 660   4            {  
 661   5               if(k==15){keybuttflag=1;P0= 0xff;}
 662   5                else write1420(0X7E);
 663   5            }
 664   4           } 
 665   3            if(  naoling[nex][0]==DispBuf[0]&&
 666   3              naoling[nex][1]==DispBuf[1]&&
 667   3                            naoling[nex][2]==DispBuf[2]&&
 668   3                     naoling[nex][3]+2==DispBuf[3])
 669   3            {    
 670   4                     delay(5);
 671   4                    if(naoling[nex][0]==DispBuf[0]&&
 672   4              naoling[nex][1]==DispBuf[1]&&
 673   4                            naoling[nex][2]==DispBuf[2]&&
 674   4                     naoling[nex][3]+2==DispBuf[3])
 675   4      
C51 COMPILER V7.06   DIANZI                                                                08/21/2008 22:03:20 PAGE 12  

 676   4               {  
 677   5                if(k==15){keybuttflag=~keybuttflag;}
 678   5                else write1420(0X7E);
 679   5               }
 680   4            } 
 681   3        }
 682   2       }
 683   1      }
 684          /*******************************************************
 685                           紅外接收
 686          *******************************************************/
 687          void wai0() interrupt 0////zhong  duan  jin ru jie shou dao de  shu ju 
 688          {
 689   1        unsigned char jihao,shu;
 690   1        unsigned long a,b,wai,m;
 691   1           wai = TH0;
 692   1           wai=wai<<8;
 693   1           wai = wai|TL0;
 694   1           if( jihao==0)
 695   1             {
 696   2              if(1800< wai && wai <2200)//gao dian ping wei 2 ms;
 697   2                {TH0=0; TL0=0;   wai=0;    jihao=1; }
 698   2                       else
 699   2                {TH0=0; TL0=0;   wai=0;     jihao=0;}
 700   2              }
 701   1           else
 702   1              {        shu++;
 703   2                                    if(250<wai &&wai<700)
 704   2                      {m=m&0x7f;  TH0=0;   TL0=0;wai=0;      }
 705   2      
 706   2                     if(800<wai && wai<1200)
 707   2      
 708   2                       {m=m | 0x80;  TH0=0;TL0=0;wai=0;     }
 709   2                  if(shu==8)
 710   2                                       {    
 711   3                                         b= m&0x0f;
 712   3                    a=m&0xf0;
 713   3                    a >>=4;                                                                              
 714   3                    if(a == (~b&0x0f))
 715   3                                       
 716   3                                         {yuanma=(a & 0x0f); shu=0;wai=0;TH0=0;TL0=0;jihao=0;}
 717   3                    else
 718   3                    {shu=0;wai=0;TH0=0;TL0=0;jihao=0;}
 719   3                                       }                     
 720   2                 else{  m >>= 1;}
 721   2                                                  
 722   2                          
 723   2              }
 724   1      }
 725          void ISP_IAP_enable(void)   //打开 ISP,IAP 功能 
 726          {
 727   1                 EA         =          0;         /* 关中断 */
 728   1                 ISP_CONTR  =          ISP_CONTR & 0x18;       /* 0001,1000 */
 729   1                 ISP_CONTR  =          ISP_CONTR | WAIT_TIME;  //设置延时
 730   1                 ISP_CONTR  =          ISP_CONTR | 0x80;       /* 1000,0000 */  //允许IAP/ISP功能
 731   1      }
 732          
 733          
 734          void ISP_IAP_disable(void) //关闭 ISP,IAP 功能
 735          {
 736   1                 ISP_CONTR  =          ISP_CONTR & 0x7f;     /* 0111,1111 */ //禁止IAP/ISP功能
 737   1                 ISP_TRIG   =          0x00;
C51 COMPILER V7.06   DIANZI                                                                08/21/2008 22:03:20 PAGE 13  

 738   1                 EA                               =   1;                           /* 开中断 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -