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

📄 main.lst

📁 我用单片机8952和电压比较器339做了一个简单的电容容量测量表
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:49:39 PAGE 1   


C51 COMPILER V7.06, 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          /******************************************************************
   2             本程序只供学习使用,未经作者许可,不得用于其它任何用途
   3                我的邮箱:computer-lov@tom.com
   4                  欢迎访问我的blog:  http://computer00.21ic.org
   5          
   6          Main.C  file
   7          
   8          Created by Computer-lov
   9          Date: 2004.11.12
  10          
  11          Edit date:2006.3.2
  12          
  13          Version V1.1
  14          Copyright(C) Computer-lov 2004-2014
  15          All rigths reserved      
  16          *******************************************************************/
  17          
  18          
  19          #include "main.h"
  20          #include "hardware.h"
  21          #include "LCD1602.H"
  22          #include "square_wave_generator.h"
  23          #include "measure_capacity.h"
  24          #include "system_initial.h"
  25          #include "isr.h"
  26          #include "measure_frequency.h"
  27          
  28          unsigned char buffer[17];
  29          unsigned char TVH0;
  30          unsigned char status=0;
  31          unsigned long int result;
  32          unsigned char menu_value;
  33          unsigned char NO_2401=0;
  34          
  35          struct
  36          {
  37           unsigned char flag;
  38           unsigned char last_status;
  39           unsigned char mode;
  40           unsigned char capacity_scope;
  41           unsigned char wave_value;
  42           unsigned int  zero_offset[5];
  43          }settings_value;
  44          
  45          code unsigned char TEXT[6][17]={
  46                                        "Select Function:",
  47                                        "1. Capacity",
  48                                        "2. Frequency",
  49                                        "3. Square Wave",
  50                                        "4. Settings",
  51                                        "5. Help"
  52                                         };
  53          
  54          
  55          void delayXms(unsigned int x)
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:49:39 PAGE 2   

  56          {
  57   1       unsigned int i,j;
  58   1       for(i=0;i<x;i++)
  59   1        for(j=0;j<240;j++);
  60   1      }
  61          
  62          void Display_menu(void)
  63          {
  64   1       LCD_cls();
  65   1       LCD_prints(TEXT[0]);
  66   1       LCD_set_position(40);
  67   1       LCD_prints(TEXT[menu_value]);
  68   1      }
  69          
  70          void Main_menu(void)
  71          {
  72   1       unsigned char i;
  73   1       Display_menu();
  74   1       while(status==MAIN_MENU)
  75   1        {
  76   2         while(!key);
  77   2         switch(key)
  78   2          {
  79   3           case     KEY_MENU: menu_value=1;Display_menu();break;
  80   3           case       KEY_UP: if(menu_value==1)menu_value=5;else menu_value--;Display_menu();break;
  81   3           case     KEY_DOWN: if(menu_value==5)menu_value=1;else menu_value++;Display_menu();break;
  82   3           case    KEY_ENTER: 
  83   3            {
  84   4             switch(menu_value)
  85   4              {
  86   5               case 1: 
  87   5                {
  88   6                 i=1;
  89   6                 LCD_cls();
  90   6                 LCD_prints("Mode select:");
  91   6                 LCD_set_position(40);
  92   6                 LCD_prints("1. Manual mode");
  93   6                 settings_value.mode=MANUAL_MODE;
  94   6                 key=0;
  95   6                 while(i)
  96   6                  {
  97   7                   while(!key);
  98   7                   switch(key)
  99   7                    {
 100   8                     case    KEY_UP: LCD_cls();LCD_prints("Mode select:");LCD_set_position(40);LCD_prints("1. Ma
             -nual mode");settings_value.mode=MANUAL_MODE;break;
 101   8                     case  KEY_DOWN: LCD_cls();LCD_prints("Mode select:");LCD_set_position(40);LCD_prints("2. Au
             -to mode");settings_value.mode=AUTO_MODE;break;
 102   8                     case KEY_ENTER: 
 103   8                      {
 104   9                       status=MEASURE_CAPACITY;
 105   9                       Write_a_EEPROM_data(EEPROM_Addr,0x01,status);
 106   9                       Write_a_EEPROM_data(EEPROM_Addr,0x02,settings_value.mode);
 107   9                       i=0;
 108   9                       break;
 109   9                      }
 110   8                     case  KEY_MENU: i=0;break;
 111   8                     default: break;
 112   8                    }
 113   7                   key=0;
 114   7                  }
 115   6                 break;
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:49:39 PAGE 3   

 116   6                }
 117   5               case 2: status=MEASURE_FREQUENCY;Write_a_EEPROM_data(EEPROM_Addr,0x01,status);break;
 118   5               case 3: status=SQUARE_WAVE_GENERATOR;Write_a_EEPROM_data(EEPROM_Addr,0x01,status);break;
 119   5               case 4: status=SETTINGS;/*Write_a_EEPROM_data(EEPROM_Addr,0x01,status);*/break;
 120   5               case 5: status=HELP;/*Write_a_EEPROM_data(EEPROM_Addr,0x01,status);*/break;
 121   5               default: break;
 122   5              }
 123   4            }break;
 124   3           default: break;
 125   3          }
 126   2         key=0;
 127   2        }
 128   1      }
 129          
 130          unsigned char code adjust_zero_text[][17]=
 131                                                    {
 132                                                     "Addjust zero",
 133                                                     "Are you sure?"
 134                                                    };
 135          
 136          void adjust_zero(void)
 137          {
 138   1       unsigned char i,temp;
 139   1       for(i=0;i<5;i++)
 140   1        {
 141   2         scope_select=SCOPE_STOP;
 142   2         delayXms(400);
 143   2         capacity_measure_end=0;
 144   2         TVH0=0;
 145   2         TH0=0;
 146   2         TL0=0;
 147   2         switch(i)
 148   2          {
 149   3           case 0: temp=SCOPE_1;break;
 150   3           case 1: temp=SCOPE_2;break;
 151   3           case 2: temp=SCOPE_3;break;
 152   3           case 3: temp=SCOPE_4;break;
 153   3           case 4: temp=SCOPE_5;break;
 154   3           default: break;
 155   3          }
 156   2         scope_select=temp;                 //开始测量
 157   2         TR0=1;
 158   2         while(!capacity_measure_end)if(TVH0>0){scope_select=SCOPE_STOP;LCD_cls();LCD_prints("Error! Please   ")
             -;LCD_set_position(40);LCD_prints("check input port");key=0;delayXms(2000);while(!key);return;}
 159   2         scope_select=SCOPE_STOP;
 160   2         ((unsigned char *)&settings_value.zero_offset[i])[0]=TH0;
 161   2         ((unsigned char *)&settings_value.zero_offset[i])[1]=TL0;
 162   2         Write_a_EEPROM_data(EEPROM_Addr,0x05+i*2,TH0);
 163   2         Write_a_EEPROM_data(EEPROM_Addr,0x05+i*2+1,TL0);
 164   2        }
 165   1      }
 166          
 167          void Settings(void)
 168          {
 169   1       LCD_cls();
 170   1       LCD_prints(adjust_zero_text[0]);
 171   1       LCD_set_position(40);
 172   1       LCD_prints(adjust_zero_text[1]);
 173   1       while(status==SETTINGS)
 174   1        {
 175   2         while(!key);
 176   2         switch(key)
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:49:39 PAGE 4   

 177   2          {
 178   3           case  KEY_MENU: status=MAIN_MENU;break;
 179   3           case KEY_ENTER: LCD_cls();LCD_prints("Adjustting...");LCD_set_position(40);LCD_prints("Pleas wait..."
             -);adjust_zero();status=MAIN_MENU;break;
 180   3           default: break;
 181   3          }
 182   2         key=0;
 183   2        }
 184   1      }
 185          
 186          unsigned char code help_text[][17]=
 187                                        {
 188                                         "About version",
 189                                         "----V1.1-----",
 190                                         "About designer",
 191                                         "Computer-lov",
 192                                         "QQ:156872359",
 193                                         "Email:",
 194                                         "Computer-lov",
 195                                         "@163.com"
 196                                         };
 197          
 198          void Help(void)
 199          {
 200   1       unsigned char i=0;
 201   1       LCD_cls();
 202   1       LCD_prints(help_text[0]);
 203   1       LCD_set_position(40);
 204   1       LCD_prints(help_text[1]);
 205   1       while(status==HELP)
 206   1        {
 207   2         while(!key);
 208   2         switch(key)
 209   2          {
 210   3           case  KEY_MENU:
 211   3           case KEY_ENTER: status=MAIN_MENU;break;
 212   3           case    KEY_UP: if(i>0){i--;LCD_cls();LCD_prints(help_text[i]);LCD_set_position(40);LCD_prints(help_t
             -ext[i+1]);}break; 
 213   3           case  KEY_DOWN: if(i<6){i++;LCD_cls();LCD_prints(help_text[i]);LCD_set_position(40);LCD_prints(help_t
             -ext[i+1]);}break;
 214   3           default: break;
 215   3          }
 216   2         key=0;
 217   2        }
 218   1      }
 219          
 220          void main(void)
 221          {
 222   1       System_initial();
 223   1       while(1)
 224   1        {
 225   2         switch(status)
 226   2          {
 227   3           case      MEASURE_CAPACITY: Measure_capacity();break;
 228   3           case     MEASURE_FREQUENCY: Measure_frequency();break;
 229   3           case SQUARE_WAVE_GENERATOR: Square_wave_generator();break;
 230   3           case              SETTINGS: Settings();break;
 231   3           case                  HELP: Help();break;
 232   3           case             MAIN_MENU: Main_menu();break;
 233   3                              default: break;
 234   3          }
 235   2        }
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:49:39 PAGE 5   

 236   1      }
 237          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    820    ----
   CONSTANT SIZE    =    375    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     40       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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