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

📄 main.lst

📁 智能浇灌系统源代码
💻 LST
字号:
C51 COMPILER V6.23a  MAIN                                                                  09/21/2011 10:24:19 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint  unsigned int
   5          extern void  LCD_DispIni(void);
   6          extern void  LCD_DispFill(uchar filldata);
   7          extern void  LCD_DispChar(uchar cy, uchar cx, char dispdata);
   8          extern void  LCD_DispStr (uchar cy, uchar cx, char *disp_str);
   9          extern void  LCD_DispHZ (uchar cy, uchar cx, char dispdata);
  10          extern void  LCD_DispHZStr (uchar cy, uchar cx, char *disp_str);
  11          
  12          extern int readt(void);
  13          extern void convert(void);
  14          //时间初始化为0
  15          uchar sec0=0x30,min0=0x30,hour0=0x30;
  16          uchar sec1=0x30,min1=0x30,hour1=0x30;
  17          //定时器1
  18          //uchar s0=0x30,m0=0x30,h0=0x30;
  19          //uchar s1=0x30,m1=0x30,h1=0x30;
  20          uint count=0;//用于计数
  21          uint count1=0;
  22          
  23          sbit led=P1;
  24          
  25          void timer0(void) interrupt 1 //计数器0,用于浇灌时间
  26          {
  27   1       
  28   1      TH0=-25000/256;
  29   1      TL0=-25000%256;
  30   1       count++;
  31   1       if(count==20)//满1秒
  32   1       {
  33   2         count=0;
  34   2         sec0++;//秒加一
  35   2         if(sec0==0x3a)
  36   2         {
  37   3           sec0=0x30;
  38   3               sec1++;
  39   3               if(sec1==0x36)
  40   3               {
  41   4              min0++;
  42   4                      sec0=0x30;
  43   4                  sec1=0x30;
  44   4                      if(min0==0x3a)
  45   4                      {
  46   5                         min1++;
  47   5                         if(min1==0x36)
  48   5                         {
  49   6                           hour0++;
  50   6                               min1=0x30;
  51   6                               min0=0x30;
  52   6                               if(hour0==0x3a)
  53   6                               {
  54   7                                 hour1++;
  55   7                                
C51 COMPILER V6.23a  MAIN                                                                  09/21/2011 10:24:19 PAGE 2   

  56   7                               }
  57   6                         }
  58   5                      }
  59   4      
  60   4               }
  61   3               }
  62   2      
  63   2         }
  64   1       
  65   1       LCD_DispChar(7, 13,sec0);
  66   1       LCD_DispChar(7,12,sec1);
  67   1      
  68   1      LCD_DispChar(7,10,min0);
  69   1      LCD_DispChar(7, 9,min1);
  70   1      //LCD_DispChar(3,1,hour0);
  71   1      //LCD_DispChar(3,0,hour1);
  72   1      }
  73          
  74          
  75          uchar dp[16]={0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,9};//小数部分转换 
  76          uchar str[6]={0,0,0,0,0,0};
  77          
  78          void time0_Ini(void)
  79          {
  80   1        TMOD=0x01;
  81   1        TH0=-25000/256;
  82   1        TL0=-25000%256;
  83   1        TR0=1;
  84   1        ET0=1;
  85   1        EA=1;
  86   1      
  87   1      }
  88          
  89          
  90          
  91            void timer1(void) interrupt 3 //计数器0,用于浇灌时间
  92          {
  93   1       
  94   1      TH1=-25000/256;
  95   1      TL1=-25000%256;
  96   1       count1++;
  97   1      if(count1==1200)//满1秒
  98   1       {
  99   2         count1=0;
 100   2         TR1=0;
 101   2         ET1=0;
 102   2         time0_Ini();
 103   2         led=0x00;
 104   2        
 105   2      }
 106   1      
 107   1      }
 108          
 109          void time1_Ini(void)
 110          {
 111   1        TMOD=0x10;
 112   1        TH1=-25000/256;
 113   1        TL1=-25000%256;
 114   1        TR1=1;
 115   1        ET1=1;
 116   1        EA=1;
 117   1      
C51 COMPILER V6.23a  MAIN                                                                  09/21/2011 10:24:19 PAGE 3   

 118   1      }
 119          
 120          void main()
 121           {
 122   1         uchar buf[4]={1,0,13,0x55};//常温
 123   1         uchar buf1[4]={2,0,13,0x55};//低温
 124   1         uchar buf2[4]={3,0,13,0x55};//高温
 125   1         uchar buf3[]={4,5,6,7,8,13,0x55};//电磁阀开关
 126   1         uchar buf4[]={9,10,11,12,13,0x55};//浇灌时间
 127   1         uchar guan[]={8,0x55};
 128   1         uchar kai[]={7,0x55};
 129   1         uchar hm[]={16,14,16,15,0x55};
 130   1       int temp;
 131   1       bit  zf;               //正负标记,0:正数  1:负数
 132   1       LCD_DispIni(); 
 133   1       
 134   1              
 135   1      while(1)
 136   1      {
 137   2       LCD_DispHZStr(2, 0, buf3);                                
 138   2       LCD_DispHZStr(3, 0, buf4);
 139   2      
 140   2       convert();         //启动温度转换
 141   2       temp=readt();      //读取温度值
 142   2      
 143   2      if(temp<=0x230)
 144   2      {
 145   3      if(temp<=0x180)
 146   3              
 147   3            {LCD_DispHZStr(0, 0, buf1);
 148   4             LCD_DispHZStr(2, 6, guan);         
 149   4                 TR0=0;
 150   4                 ET0=0;
 151   4                 EA=0;
 152   4             LCD_DispChar(7, 13,'0');
 153   4             LCD_DispChar(7,12,'0');
 154   4             LCD_DispChar(7,10,'0');
 155   4             LCD_DispChar(7, 9,'0');
 156   4                 led=0xff;
 157   4                 }
 158   3      
 159   3      else 
 160   3      
 161   3          {
 162   4              
 163   4              time0_Ini();
 164   4              LCD_DispHZStr(0, 0, buf);
 165   4              LCD_DispHZStr(2, 6, kai);
 166   4              led=0x00;
 167   4              if(min0==0x31)//到一分钟,停止浇灌
 168   4              {
 169   5                TR0=0;
 170   5            ET0=0;
 171   5            LCD_DispHZStr(2, 6, guan);
 172   5                led=0xff;
 173   5                sec0=0x30;
 174   5                sec1=0x30;
 175   5                min0=0x30;
 176   5                min1=0x30;
 177   5                time1_Ini();//启动定时器T1
 178   5                
 179   5              
C51 COMPILER V6.23a  MAIN                                                                  09/21/2011 10:24:19 PAGE 4   

 180   5               
 181   5              }
 182   4      
 183   4              
 184   4                }
 185   3      }                           
 186   2      
 187   2      else 
 188   2         {
 189   3          time0_Ini();
 190   3              LCD_DispHZStr(0, 0, buf2);
 191   3               LCD_DispHZStr(2, 6, kai);
 192   3               led=0;
 193   3              if(min0==0x32)
 194   3              {
 195   4                TR0=0;
 196   4            ET0=0;
 197   4            EA=0;
 198   4                led=0xff;
 199   4                sec0=0x30;//时间清零
 200   4                sec1=0x30;
 201   4                min0=0x30;
 202   4                min1=0x30;
 203   4              }
 204   3               }
 205   2             zf=0; 
 206   2      
 207   2             if(temp<0)               //如果温度在0度以下
 208   2               { zf=1;            //置负数标志
 209   3                 temp=-temp;      //求补
 210   3               }
 211   2             str[4]=dp[temp&0x0f]+0x30;       //求出温度的小数
 212   2             temp=temp>>4;    
 213   2             str[0]=temp/100+0x30;            //求出百位
 214   2             temp=temp%100;
 215   2             str[1]=temp/10+0x30;                 //求出十位
 216   2             str[2]=temp%10+0x30;                 //求出个位
 217   2                 str[3]='.';
 218   2             if(zf==1)                                //如果是负数
 219   2               { if(str[1]=='0')      //如果十位为0
 220   3                   { str[0]=' ';                 //显示格式为' -x.x'
 221   4                     str[1]='-';                      
 222   4                   }
 223   3                 else                                            //如果十位不为0
 224   3                   str[0]='-';                   //显示格式为'-xx.x'
 225   3               }
 226   2             else                                            //否则,如果是正数
 227   2               { if(str[0]=='0')                 //如果百位、十位都是0
 228   3                  { if(str[1]=='0')        //显示格式为'  x.x' 
 229   4                         str[1]=' ';     // 如果只有百位为0   
 230   4                    str[0]=' ';          //显示格式为' xx.x'
 231   4                   }
 232   3               } 
 233   2            LCD_DispStr(1.5, 5, str);
 234   2         
 235   2      }
 236   1        
 237   1       }
 238          
 239            
 240            
 241           
C51 COMPILER V6.23a  MAIN                                                                  09/21/2011 10:24:19 PAGE 5   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    834    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32      36
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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