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

📄 all.lst

📁 ds18b20测温程序,在keilc51调适通过
💻 LST
📖 第 1 页 / 共 4 页
字号:
 705          /*全局变量:DS_Tl[5] DS_Th[5]*/
 706          void SetThTl(unsigned char Num)
 707          {
 708   1        LCD_Initial();
 709   1        GotoXY(5,2);                                                    
 710   1        Print("S C UD LR Q");         //显示有效按键
 711   1        GotoXY(0,2);
 712   1        Print("NO.");
 713   1        LCD_Write(LCD_DATA,Num+1+'0');
 714   1        ThTlDisp(Num,1);
 715   1        while(1)
 716   1        {
 717   2          unsigned char Key2=Key_scan();   //二级菜单扫描
 718   2          if(Key2==CHANGE)
 719   2           {
 720   3             Delay_long(50);
 721   3             if(Key_scan()==0)
 722   3                 {
 723   4                   unsigned char i=0;   //左右指示
 724   4               GotoXY(8,1);
 725   4                       LCD_Write(LCD_DATA,0x7f);    
 726   4                       while(1)
 727   4                       {
 728   5                        unsigned char Key3=Key_scan();   //三级菜单扫描
 729   5                        if(Key3==LEFT)
 730   5                         {
 731   6                               Delay_long(50);
 732   6                               if(Key_scan()==0)
 733   6                                {
 734   7                                 i=0;                         //选择TH
 735   7                                 GotoXY(15,1);
 736   7                                 LCD_Write(LCD_DATA,0x20);
 737   7                                 GotoXY(8,1);
C51 COMPILER V7.20   ALL                                                                   01/16/2009 13:29:33 PAGE 13  

 738   7                                 LCD_Write(LCD_DATA,0x7f);
 739   7                                }
 740   6                         }
 741   5                        else if(Key3==RIGHT)
 742   5                         {
 743   6                               Delay_long(50);
 744   6                               if(Key_scan()==0)
 745   6                                {
 746   7                                      i=1;                    //选择TL
 747   7                                      GotoXY(8,1);
 748   7                                  LCD_Write(LCD_DATA,0x20);
 749   7                                      GotoXY(15,1);
 750   7                                  LCD_Write(LCD_DATA,0x7f);
 751   7                                }
 752   6                         }
 753   5                        else if(Key3==UP)
 754   5                         {
 755   6                               Delay_long(100);
 756   6                               if(i==0)
 757   6                                DS_Th[Num]=DS_Th[Num]+1;
 758   6                               else
 759   6                                DS_Tl[Num]=DS_Tl[Num]+1;
 760   6                               ThTlDisp(Num,1);
 761   6                         } 
 762   5                        else if(Key3==DOWN)
 763   5                         {
 764   6                               Delay_long(100);
 765   6                               if(i==0)
 766   6                                DS_Th[Num]=DS_Th[Num]-1;
 767   6                               else
 768   6                                DS_Tl[Num]=DS_Tl[Num]-1;
 769   6                               ThTlDisp(Num,1);
 770   6                         } 
 771   5                        else if(Key3==SET)
 772   5                         {
 773   6                               Delay_long(50);
 774   6                               if(Key_scan()==0)
 775   6                                {
 776   7                                 DS_Reset();
 777   7                                 Match_ID(Num);                  //匹配ROM
 778   7                         DS_WriteByte(WRITE_SCR);        //  
 779   7                                 DS_WriteByte(DS_Th[Num]);
 780   7                                 DS_WriteByte(DS_Tl[Num]);
 781   7                                 DS_WriteByte(0x7f);
 782   7                                 DS_Reset();
 783   7                                 Match_ID(Num);
 784   7                                 DS_WriteByte(COPY_SCR);
 785   7                                 SetThTl(Num);
*** WARNING C265 IN LINE 785 OF ALL.C: '_SetThTl': recursive call to non-reentrant function
 786   7                                }
 787   6                         }
 788   5                        else if(Key3==QUIT)
 789   5                        {
 790   6                      Delay_long(50);
 791   6                  if(Key_scan()==0)
 792   6                      {
 793   7                        Auto_Mode(); 
 794   7                      }
 795   6                } 
 796   5                      }
 797   4                }
 798   3         }
C51 COMPILER V7.20   ALL                                                                   01/16/2009 13:29:33 PAGE 14  

 799   2        else if(Key2==DOWN)
 800   2         {
 801   3               Delay_long(50);
 802   3           if(Key_scan()==0)
 803   3                {
 804   4                  Num=Num+1;
 805   4                      if(Num>4)
 806   4                        Num=0;
 807   4                      SetThTl(Num);
*** WARNING C265 IN LINE 807 OF ALL.C: '_SetThTl': recursive call to non-reentrant function
 808   4                }
 809   3         }
 810   2        else if(Key2==QUIT)
 811   2         {
 812   3               Delay_long(50);
 813   3           if(Key_scan()==0)
 814   3                {
 815   4                  Auto_Mode(); 
 816   4                }
 817   3         }
 818   2       }
 819   1      }
 820          
 821          /****报警设置模式程序*****/
 822          /*功能:设置Th和Tl   */
 823          void Alarm_Set()
 824          {
 825   1       LCD_Initial();
 826   1       GotoXY(0,1);                                     
 827   1       Print("Alarm Set");
 828   1       GotoXY(9,2);
 829   1       Print("S U D Q") ;
 830   1       while(1)                             //主菜单循环
 831   1       {
 832   2        unsigned char Key1=Key_scan() ;                 
 833   2       
 834   2        if(Key1==SET)           //如果按SET键
 835   2         {Delay_long(50);       //延时0.25S等待释放按键
 836   3          if(Key_scan()==0)     //释放后操作
 837   3          {
 838   4            SetThTl(0);
 839   4          }   
 840   3         }
 841   2         else if(Key1==DOWN)  //按DOWN键切换至手动模式
 842   2          {Delay_long(50);
 843   3               if(Key_scan()==0)
 844   3                {
 845   4                 Hand_Mode();
 846   4                }
 847   3              }
 848   2         else if(Key1==UP)    //按DOWN键切换至手动模式
 849   2          {Delay_long(50);
 850   3               if(Key_scan()==0)
 851   3                {
 852   4                 ID_Mode();
 853   4                }
 854   3              }
 855   2         else if(Key1==QUIT)  //按QUIT键返回AUTO模式
 856   2          {Delay_long(50);                                     
 857   3           if(Key_scan()==0)                                   
 858   3           {
 859   4                Auto_Mode();
C51 COMPILER V7.20   ALL                                                                   01/16/2009 13:29:33 PAGE 15  

 860   4           }
 861   3          }   
 862   2       }
 863   1      }         
 864          
 865          /////////////////////////////////////////////////
 866          /*****************菜单选择部分******************/
 867          /////////////////////////////////////////////////
 868          
 869          void Menu_Function(void)
 870          {
 871   1         if(Key_scan()==MENU)   //如果菜单键按下
 872   1          {
 873   2               Delay_long(200);        
 874   2               Delay_long(200);          //延时2S(长按有效)
 875   2                if(Key_scan()==MENU) //菜单键有效
 876   2                {
 877   3                 LCD_Initial();               //初始化LCD
 878   3                 GotoXY(0,1);
 879   3                 Print("Boot Menu");  //显示"Boot Menu"
 880   3                 GotoXY(10,2);
 881   3                 Print("  D Q ");     //显示有效按键
 882   3                 while(1)                              
 883   3                  {
 884   4                        unsigned char Key=Key_scan()  ;                 
 885   4                        if(Key==DOWN)        //如果按DOWN键
 886   4                        {Delay_long(50);         //延时0.25S等待释放按键
 887   5                         if(Key_scan()==0)   //按键抬起后执行
 888   5                          {
 889   6                               Hand_Mode();                                            
 890   6                          }
 891   5                        }
 892   4                   else if(Key==QUIT)    //如果QUIT键按下
 893   4                        {Delay_long(50);         //延时0.25S等待释放按键
 894   5                         if(Key_scan()==0)   //按键抬起后执行AUTO模式
 895   5                              {
 896   6                               Auto_Mode();      //返回自动模式
 897   6                              }
 898   5                        }     
 899   4                      }
 900   3                }
 901   2              }
 902   1      }
 903          
 904          ////////////////////////////////////////////////////////
 905          /**********************主程序**************************/
 906          ////////////////////////////////////////////////////////
 907          
 908          main()
 909          {
 910   1        unsigned char i;
 911   1        LCD_Initial();
 912   1        GotoXY(2,1);
 913   1        Print("Sun Yunhui");    
 914   1        GotoXY(3,2);
 915   1        Print("04021313");     //开机显示画面 
 916   1        for(i=0;i<5;i++)           //将EEPROM中的ID载入RAM
 917   1          ISP_Read8(i);
 918   1        for(i=0;i<5;i++)
 919   1          DS_ReadTemp(i);             //读出器件Th和Tl
 920   1        Delay_long(200);
 921   1        Delay_long(200);
C51 COMPILER V7.20   ALL                                                                   01/16/2009 13:29:33 PAGE 16  

 922   1        Auto_Mode();
 923   1      
 924   1      }         


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2542    ----
   CONSTANT SIZE    =    135    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     65      30
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  2 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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