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

📄 main.lst

📁 此程序是基于c8051f020单片机的c语言程序
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  01/14/2009 21:15:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\单片机\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<c8051f020.h>
   2          #include "initial.h"
   3          #define sysclk         22118400        // SYSCLK frequency in Hz            
   4          xdata long uint value,value1;    
   5          xdata long uint i=0;
   6          uchar t,stop0;
   7          uint AD_num,AD_num2;
   8          uint relay_A;
   9          uchar pga_A;
  10          uchar keynum;
  11          xdata long uint I_I,Y;
  12          bit  isnewdata,flag_f;  
  13          sbit relay0=P0^0;
  14          sbit relay1=P0^1;
  15          sbit relay2=P0^2;
  16          sbit relay3=P0^3;
  17          /*sbit A0=P3^4;
  18          sbit A1=P3^5;
  19          sbit A2=P3^6;
  20          sbit A3=P3^7;*/
  21          uchar code table2[]={'0','1','2','3',
  22                                          '4','5','6','7',
  23                                          '8','9'};
  24          uchar data0,data1,data2,data3;
  25          uchar code str1[]="welcome to ADC0 test!";//8
  26          uchar code str2[]="test key V:";//12
  27          uchar code str3[]="test key I:";
  28          uchar code str4[]="V true RMS is:";//9
  29          uchar code str5[]="I true RMS is:";
  30          
  31          void main( )
  32          {     
  33   1              SYSTEM_Init();                            //系统初始化
  34   1              PORT_Init();                              //端口初始化
  35   1              Lcd1602_Initial( );                       //Lcd初始化 ]
  36   1              delay(10);
  37   1              AD9851_Init(); 
  38   1              Lcd1602_Write_String(1,1,"DDS Begin-> 'F' ");
  39   1      
  40   1              while(1)  
  41   1              {                                                               
  42   2      /*         keynum=KeyEn();
  43   2                 if(keynum==12)         //dds   C
  44   2                 {  
  45   2                        f_add();
  46   2                 }    
  47   2                 if(keynum==13)
  48   2                 {
  49   2                    flag_f=0;
  50   2                        select_f();
  51   2                 }
  52   2      
  53   2                 if(keynum==14)         //ad
  54   2                 {
  55   2                     relay_begin();
C51 COMPILER V8.02   MAIN                                                                  01/14/2009 21:15:27 PAGE 2   

  56   2              //         pga_begin();
  57   2                 process_ADC00();
  58   2                         process_ADC00();
  59   2                         change_relay();
  60   2      
  61   2               //  process_ADC00();
  62   2                        // change_pga();
  63   2      
  64   2                 process_ADC00();     //测电流变电压的电压
  65   2                 process_ADC01(); //测导纳网络本身的电压
  66   2                         measure_Y();
  67   2                         Y_display();
  68   2                 }
  69   2                if(keynum==15)
  70   2                {                                                                        */
  71   2                         angle_measure();
  72   2      //        }
  73   2              } 
  74   1              }                        
  75          
  76          
  77          
  78          void display_f(long fre)
  79          {       
  80   1           Lcd1602_Clear_All( );
  81   1               delay(10);
  82   1           if(fre<1000)
  83   1               {
  84   2                  Lcd1602_Write_String(1,0,"Fre:   Hz   ");           
  85   2                      Lcd1602_Write_Data(1,4,fre/100+0x30);
  86   2                      Lcd1602_Write_Data(1,5,fre%100/10+0x30);
  87   2                      Lcd1602_Write_Data(1,6,fre%10+0x30);
  88   2               }
  89   1               if(fre>999)
  90   1               {
  91   2                  Lcd1602_Write_String(1,0,"Fre:   . kHz");           
  92   2                      Lcd1602_Write_Data(1,4,fre/100000+0x30);
  93   2                      Lcd1602_Write_Data(1,5,fre%100000/10000+0x30);     
  94   2                      Lcd1602_Write_Data(1,6,fre%10000/1000+0x30); 
  95   2                      Lcd1602_Write_Data(1,8,fre%1000/100+0x30);
  96   2               } 
  97   1      }
  98          
  99          void process_ADC00()
 100          {
 101   1        uchar DataH,DataL;
 102   1        Lcd1602_Clear_Line(1);
 103   1        Lcd1602_Write_String(1,0,str2);
 104   1        ADC00Initial();
 105   1        ADC0begin();
 106   1        DataH=ADC0H;
 107   1        DataL=ADC0L;
 108   1        AD_num=DataH*256+DataL;
 109   1        AD0INT=0;
 110   1        onshow_data(AD_num);
 111   1      }
 112          
 113          void process_ADC01()
 114          {
 115   1       uchar DataH,DataL;
 116   1       Lcd1602_Clear_Line(1);
 117   1       Lcd1602_Write_String(1,0,str3);
C51 COMPILER V8.02   MAIN                                                                  01/14/2009 21:15:27 PAGE 3   

 118   1       ADC01Initial();
 119   1       ADC0begin();
 120   1       DataH=ADC0H;
 121   1       DataL=ADC0L;
 122   1       AD_num2=DataH*256+DataL;
 123   1       AD0INT=0;
 124   1       onshow_data(AD_num2);
 125   1       } 
 126          
 127          
 128          void onshow_data(uint AD_x)
 129          {
 130   1        long uint V_RMS;
 131   1        V_RMS=AD_x*0.59326171875;
 132   1        data2=V_RMS%1000/100;
 133   1        data3=V_RMS/1000; 
 134   1        data1=V_RMS%1000%100/10; 
 135   1        data0=V_RMS%1000%100%10;
 136   1        Lcd1602_Write_Data(2,10,table2[data3]);
 137   1        Lcd1602_Write_Data(2,11,'.');
 138   1        Lcd1602_Write_Data(2,12,table2[data2]);
 139   1        Lcd1602_Write_Data(2,13,table2[data1]);
 140   1        Lcd1602_Write_Data(2,14,table2[data0]);
 141   1      }
 142          
 143          void relay_begin()
 144          {
 145   1         relay0=0;
 146   1         relay1=1;      //10倍  R=10
 147   1         relay2=0; 
 148   1         relay3=0;         
 149   1      }
 150          
 151          /*void pga_begin()
 152          {
 153             A0=0;   //选择放大倍数为1
 154             A0=0;
 155             A0=0;
 156             A0=0;
 157          } */
 158          
 159          void change_relay()
 160          {
 161   1         if(AD_num>=0&&AD_num<1012)
 162   1         {
 163   2             relay0=0;
 164   2             relay1=0;          //10倍  R=1000
 165   2             relay2=0; 
 166   2             relay3=1;
 167   2                 relay_A=1000;
 168   2         }
 169   1         if(AD_num>=1013&&AD_num<2022)
 170   1         {
 171   2             relay0=0;
 172   2             relay1=0;          //10倍  R=100
 173   2             relay2=1; 
 174   2             relay3=0;
 175   2                 relay_A=100;
 176   2         }
 177   1         if(AD_num>=2023&&AD_num<3034)
 178   1         {
 179   2             relay0=0;
C51 COMPILER V8.02   MAIN                                                                  01/14/2009 21:15:27 PAGE 4   

 180   2             relay1=1;          //10倍  R=10
 181   2             relay2=0; 
 182   2             relay3=0;
 183   2                 relay_A=10;
 184   2         }
 185   1         if(AD_num>=3035)
 186   1         {
 187   2             relay0=1;
 188   2             relay1=0;          //10倍  R=1
 189   2             relay2=0; 
 190   2             relay3=0;
 191   2                 relay_A=1;
 192   2         }
 193   1      }
 194          
 195          /*void change_pga()
 196          {
 197                  if(AD_num>0&&AD_num<400)
 198                   {
 199                          A0=1;    //放大10倍
 200                          A1=0;
 201                          A2=0;
 202                          A3=0;
 203                          pga_A=10;
 204                   }
 205                    if(AD_num>400)
 206                    {
 207                          A0=0;    //放大1倍
 208                          A1=0;
 209                          A2=0;
 210                          A3=0;
 211                          pga_A=1;
 212                    }
 213          }  */
 214          
 215          void measure_Y()
 216          {
 217   1           //I=AD_num*0.59326171875/10/relay_A/pga_A;
 218   1               //Y=I/(AD_num*0.59326171875);
 219   1          // I_I=100000*AD_num/relay_A/pga_A; //仪表放大十倍
 220   1               I_I=100000*AD_num/relay_A; //仪表放大十倍
 221   1               Y=I_I/(AD_num2*1.00);
 222   1      }
 223          
 224          void Y_display()
 225          {
 226   1           uchar y5,y4,y3,y2,y1,y0;
 227   1           y5=Y/100000;
 228   1               y4=Y%100000/10000;
 229   1               y3=Y%100000%10000/1000;
 230   1               y2=Y%100000%10000%1000/100; 
 231   1               y1=Y%100000%10000%1000%100/10;
 232   1               y0=Y%100000%10000%1000%100%10;
 233   1      }
 234          
 235          void select_f()
 236          {
 237   1         Lcd1602_Clear_All( );
 238   1         delay(10);
 239   1         display_selection();     
 240   1         while(!flag_f)
 241   1        {
C51 COMPILER V8.02   MAIN                                                                  01/14/2009 21:15:27 PAGE 5   

 242   2               keynum=KeyEn();
 243   2               if(keynum==1)
 244   2               {
 245   3                      display_f(100); 
 246   3                      AD9851_DDS_Control(100,0);           
 247   3               }
 248   2               if(keynum==2)
 249   2               {
 250   3                      display_f(300); 
 251   3                      AD9851_DDS_Control(300,0);           
 252   3               }
 253   2               if(keynum==3)
 254   2               {
 255   3                      display_f(1000); 
 256   3                      AD9851_DDS_Control(1000,0);          
 257   3               }
 258   2               if(keynum==4)
 259   2               {
 260   3                      display_f(3000); 
 261   3                      AD9851_DDS_Control(3000,0);          
 262   3               }
 263   2               if(keynum==5)
 264   2               {
 265   3                      display_f(10000); 
 266   3                      AD9851_DDS_Control(10000,0);         
 267   3               }
 268   2               if(keynum==6)
 269   2               {
 270   3                   flag_f=1;
 271   3               }
 272   2         }
 273   1      }
 274          
 275          void f_add()
 276          {
 277   1                    Lcd1602_Clear_All( );                
 278   1                    stop0=0;            
 279   1                    while(!stop0)
 280   1                        {      
 281   2                           for(i=0;i<20;i++)
 282   2                               {   
 283   3                                   keynum=KeyEn(); //i=2;
 284   3                                   display_f(100*i+100); 
 285   3                                       AD9851_DDS_Control(100*i+100,0); 
 286   3                                       delay(2000); //while(1);               
 287   3                                          if(keynum==2) 
 288   3                                          {
 289   4                                             stop0=1;
 290   4                                                 break;
 291   4                                              }
 292   3                               } 
 293   2                         }
 294   1                                Lcd1602_Write_String(1,12,"stop");  
 295   1      }
 296          
 297          void display_selection()
 298          {
 299   1          Lcd1602_Write_String(1,0,"1-100"); 
 300   1              Lcd1602_Write_String(1,6,"2-300");
 301   1              Lcd1602_Write_String(1,12,"3-1K");
 302   1              Lcd1602_Write_String(2,0,"4-3K");
 303   1              Lcd1602_Write_String(2,5,"5-10K");
C51 COMPILER V8.02   MAIN                                                                  01/14/2009 21:15:27 PAGE 6   

 304   1      } 
 305          
 306          
 307          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1867    ----
   CONSTANT SIZE    =    162    ----
   XDATA SIZE       =     20    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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