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

📄 text1.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 10  

 551   2          }
 552   1      
 553   1      
 554   1          CLK=0;
 555   1          _nop_();
 556   1          _nop_();
 557   1          CLK=1;
 558   1          _nop_();
 559   1          _nop_();
 560   1      
 561   1      
 562   1           for(i=0;i<=6;i++)
 563   1               {
 564   2               CLK = 0;                  //时钟为低电平
 565   2               if(DO)
 566   2                       {                         //如果采集到的位为1
 567   3                 Temp1=Temp1+1;          //给临时存储Temp1加1
 568   3                 Temp1=Temp1<<1;
 569   3                       }         //临时存储器左移一位
 570   2               else
 571   2                 Temp1=Temp1<<1;          //如果采集到的数位为0,临时存储器左移一位
 572   2                       _nop_();
 573   2               _nop_();
 574   2               _nop_();
 575   2               _nop_();
 576   2               CLK = 1;    
 577   2            }                             //时钟为高电平,完成一个时钟周期数据采集
 578   1             CLK = 0;
 579   1             if(DO)  Temp1=Temp1+1;
 580   1             if(DO)  Temp2=0x80;
 581   1      
 582   1             CLK = 1; 
 583   1                                            //采集数据校验          
 584   1             
 585   1             for(i=0;i<=6;i++)
 586   1               {
 587   2                 CLK=0;
 588   2                 if(DO){
 589   3                   Temp2=Temp2>>1;
 590   3                   Temp2=Temp2+0x80;  }
 591   2                 else
 592   2                   Temp2=Temp2>>1;
 593   2                 CLK = 1; 
 594   2               }
 595   1         CS = 1;
 596   1         if(Temp1==Temp2)             //判断数据采集是否有效
 597   1         {  
 598   2            error=0;
 599   2            return Temp1;
 600   2              }
 601   1         else
 602   1         {
 603   2           error=1;
 604   2           return Temp1;
 605   2         }
 606   1      }
 607          
 608          
 609          
 610          
 611          
 612          
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 11  

 613          
 614          void main()                                                                                                                                                      
 615          {       
 616   1              unsigned int  result;
 617   1          uchar i;
 618   1              uchar t;
 619   1      
 620   1              
 621   1              uchar i2;
 622   1              uchar j=0;     //标记
 623   1              ulong a=1000,b=1000;  //a用来记录频率;b用来记录频率间隔(开始是为1000HZ)
 624   1              ulong c=0; 
 625   1              
 626   1          
 627   1              uchar code d[]="please insert F:";
 628   1              uchar code q[]="insert code:        ";  
 629   1              uchar code w[]="please insert DF:" ;
 630   1              uchar  ask[20];
 631   1      
 632   1      
 633   1      /*      uchar code str0='1';
 634   1              uchar code str1='2';
 635   1              uchar code str2='3';
 636   1          uchar code str3='A';
 637   1              uchar code str4='4';
 638   1              uchar code str5='5';
 639   1          uchar code str6='6';
 640   1              uchar code str7='B';
 641   1              uchar code str8='7';
 642   1          uchar code str9='8';
 643   1              uchar code str10='9';
 644   1              uchar code str11='c';
 645   1              uchar code str12='*';
 646   1          uchar code str13='0';
 647   1              uchar code str14='#';
 648   1              uchar code str15='D';   
 649   1       */
 650   1              
 651   1      
 652   1              unsigned char offset=0x80;   //定义一个偏移地址变量,lcd1602 写入控制字时用到
 653   1              unsigned char key;
 654   1      
 655   1              delay(2);
 656   1              lcd1602_bus=0xff;
 657   1              lcd1602_init();
 658   1          lcd1602_wrcmd(offset+0x00);
 659   1          xianshi(0);  
 660   1              
 661   1              
 662   1          
 663   1      
 664   1      
 665   1      //      lcd1602_clear();
 666   1          while(1)
 667   1              {       
 668   2                 
 669   2                         key=getkey_ii();
 670   2      
 671   2                         /***************  A键上调  ******************/
 672   2                         if(key==7)
 673   2                              { 
 674   3                                      j=j+1;
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 12  

 675   3                                      if(j>6)j=0;
 676   3                                   xianshi(j);      
 677   3                               
 678   3                               }
 679   2      
 680   2      
 681   2                         /***************  B键下调  ******************/
 682   2                         if (key==3)
 683   2                              {                        
 684   3                                  if (j==0) j=7;
 685   3                                      j=j-1;
 686   3                                      xianshi(j);
 687   3      
 688   3                               } 
 689   2      
 690   2      
 691   2                        /*************     SIN  *******************/
 692   2                        if(key==0  || ((j==0)&&(key==15)))
 693   2                      { key=getkey_ii(); 
 694   3                             ad9850(a,b,c);                   
 695   3                         delay(1000);           
 696   3                      }
 697   2      
 698   2      
 699   2      
 700   2                       /***************   OOK    *****************/
 701   2                if(key==1  || ((j==1)&&(key==15)))
 702   2                        {
 703   3                        key=18;
 704   3                        i2=0;
 705   3                lcd1602_init();
 706   3                lcd1602_clear();
 707   3                       
 708   3                        while(key!=15)
 709   3                         {    
 710   4                  key=getkey_ii(); 
 711   4                          delay(100);
 712   4                          if (key==0)          {i2=i2+1; ask[i2-1]=1  ;}        
 713   4                              if (key==13)     {i2=i2+1; ask[i2-1]=0; }  
 714   4                              lcd1602_clear();            
 715   4                              for(i=0;i<18;i++) lcd1602_wrdata(q[i]);
 716   4                              lcd1602_wrcmd(offset+0x40);   //换行
 717   4                          for(i=0;i<i2;i++) lcd1602_wrdata(ask[i]+0x30);      
 718   4                         } 
 719   3                              if(i2!=0)
 720   3                              {
 721   4                                lcd1602_clear(); 
 722   4                              key=18;
 723   4                              while(key!=15)
 724   4                          {
 725   5                              
 726   5                              for(i=0;i<i2;i++)       
 727   5                              {
 728   6                                 if(ask[i]==0) ad9850(0,0,0);
 729   6                                 if(ask[i]==1) ad9850(300,0,0);
 730   6                                 lcd1602_clear(); 
 731   6                             lcd1602_wrcmd(offset+0x40);   //换行
 732   6                                 for(t=0;t<i2;t++) lcd1602_wrdata(ask[t]+0x30);  
 733   6                                 delay_1ms(10);
 734   6                                 key=getkey_ii();
 735   6                              }
 736   5                              
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 13  

 737   5                              }
 738   4      
 739   4                              }
 740   3                              xianshi(j); 
 741   3                       }
 742   2      
 743   2      
 744   2      
 745   2                        /*************     SET  F   *******************/
 746   2                        if(key==2|| ((j==2)&&(key==15)))
 747   2                        { a=0;
 748   3                          lcd1602_clear();
 749   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 750   3                              key=18;     //避免和下面的WHILE语句条件冲突;临时改变KEY 只变一次 
 751   3                              
 752   3                          while(key!=15 )
 753   3                          {
 754   4                            key=getkey_ii();
 755   4      
 756   4      
 757   4                      if(key==0)
 758   4                              { 
 759   5                                      lcd1602_clear();
 760   5                          lcd1602_wrcmd(offset+0x00);
 761   5                                         
 762   5                                  a=a*10+1;
 763   5      
 764   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 765   5                      lcd1602_wrcmd(offset+0x40);   //换行
 766   5                          xianshu(a);  
 767   5                              //lcd1602_wrcmd(offset+0x40);
 768   5                              //      for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
 769   5                               }
 770   4                          else if (key==1)
 771   4                              { 
 772   5                                      lcd1602_clear();
 773   5                          lcd1602_wrcmd(offset+0x00);
 774   5      
 775   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 776   5                                      lcd1602_wrcmd(offset+0x40);   //换行 
 777   5                                      a=a*10+2;
 778   5                                       xianshu(a);  
 779   5                              //lcd1602_wrcmd(offset+0x40);
 780   5                                      //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
 781   5                               }
 782   4                         else if (key==2)
 783   4                               {
 784   5                                      lcd1602_clear();
 785   5                          lcd1602_wrcmd(offset+0x00);
 786   5                          
 787   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 788   5                      lcd1602_wrcmd(offset+0x40);   //换行
 789   5                      a=a*10+3;
 790   5                                      xianshu(a);  
 791   5                            //  lcd1602_wrcmd(offset+0x40);
 792   5                              //      for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
 793   5                               }
 794   4      
 795   4                 else if (key==4)
 796   4                               {
 797   5                                      lcd1602_clear();
 798   5                          lcd1602_wrcmd(offset+0x00);
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 14  

 799   5                                      a=a*10+4;
 800   5                              
 801   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 802   5                      lcd1602_wrcmd(offset+0x40);   //换行
 803   5                          xianshu(a);  
 804   5                     }
 805   4                  else if (key==5)
 806   4                               {
 807   5                                      lcd1602_clear();
 808   5                          lcd1602_wrcmd(offset+0x00);
 809   5                                      
 810   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 811   5                      lcd1602_wrcmd(offset+0x40);   //换行
 812   5                                      a=a*10+5;
 813   5                          xianshu(a);  
 814   5                     }
 815   4                  else if (key==6)
 816   4                               {
 817   5                                      lcd1602_clear();
 818   5                          lcd1602_wrcmd(offset+0x00);
 819   5                                      
 820   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 821   5                      lcd1602_wrcmd(offset+0x40);   //换行
 822   5                                      a=a*10+6;
 823   5                          xianshu(a);  
 824   5                      }
 825   4                              else if (key==8)
 826   4                               {
 827   5                                      lcd1602_clear();
 828   5                          lcd1602_wrcmd(offset+0x00);

⌨️ 快捷键说明

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