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

📄 angle_measure.lst

📁 此程序是基于c8051f020单片机的c语言程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   ANGLE_MEASURE                                                         01/14/2009 21:15:28 PAGE 1   


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

line level    source

   1          #include<c8051f020.h>
   2          #include"initial.h"
   3          //#define data_port P2 
   4          sbit one=P2^0;
   5          sbit two=P2^1;
   6          sbit three=P2^2;
   7          sbit cl=P2^3;
   8          sbit clr=P2^4;
   9          sbit spul=P2^5;
  10          sbit start=P2^6;
  11          sbit end=P2^7;
  12          /*sbit spul=P2^0;
  13          sbit cl=P2^1;
  14          sbit clr=P2^2;
  15          sbit one=P2^3;
  16          sbit two=P2^4;
  17          sbit three=P2^5;
  18          sbit start=P2^6;
  19          sbit end=P2^7;*/
  20          sbit phasecon=P0^4;
  21          sbit fcon=P0^6;
  22          uchar ii,j;
  23          xdata long double impulse_1,impulse_2;
  24          uchar code str11[]="OK!";//3
  25          uchar code str22[]="Phase:";    //6
  26          uchar code str33[]="F && T:1";//5
  27          uchar code str44[]="Imp:2";//5
  28          uchar code str55[]="Pha:3";//5
  29          uchar code str66[]="Welcome!";//        8
  30          uchar code str77[]="Phase Measure";//13
  31          uchar code table[]={'0','1','2','3',
  32                                          '4','5','6','7',
  33                                          '8','9','.'};
  34          extern keynum;
  35          uchar five_1,four_1,three_1,two_1,one_1,zero_1,point_1,point_2;
  36          uchar five_2,four_2,three_2,two_2,one_2,zero_2;
  37          uchar five_3,four_3,three_3,two_3,one_3,zero_3;
  38          uchar five_4,four_4,three_4,two_4,one_4,zero_4;
  39          uchar five_5,four_5,three_5,two_5,one_5,zero_5;
  40          xdata long uint bin0,bin1,bin2,bin3,tin0,tin1,tin2,tin3,positive,negative;
  41          xdata long double bin,tin;
  42          xdata long uint Fx,phase,TT;
  43          void angle_measure()
  44          {
  45   1              Lcdinitial ();
  46   1              delay(10);
  47   1              display();
  48   1              while(1)
  49   1              {
  50   2                       keynum=KeyEn();                                         
  51   2                      if(keynum==9) 
  52   2                       {
  53   3                          display_2();
  54   3                          j++;
  55   3                              frequence();//测频率
C51 COMPILER V8.02   ANGLE_MEASURE                                                         01/14/2009 21:15:28 PAGE 2   

  56   3                      }
  57   2                      if(keynum==10)
  58   2                      {
  59   3                           display_2(); 
  60   3                           j++;
  61   3                              impulse();//测脉宽
  62   3                      }
  63   2                      if(keynum==11)
  64   2                      {
  65   3                          display_2();
  66   3                          j++;
  67   3                              phase_measure();//测相位差
  68   3                  }
  69   2                      if(keynum==8)
  70   2                      {
  71   3                                write_command(0x01);
  72   3                                delay(10);                
  73   3                            display();
  74   3                      }                                        
  75   2              }
  76   1      }       
  77          
  78          void measure_bin()
  79          {
  80   1              three=0;
  81   1              two=0;
  82   1              one=0;
  83   1              bin0=P0;
  84   1      
  85   1              three=0;
  86   1              two=0;
  87   1              one=1;
  88   1              bin1=P0;
  89   1      
  90   1              three=0;
  91   1              two=1;                           
  92   1              one=0;
  93   1              bin2=P0;
  94   1      
  95   1      
  96   1              three=0;
  97   1              two=1;
  98   1              one=1;
  99   1              bin3=P0;
 100   1      
 101   1              bin=(bin3<<24)+(bin2<<16)+(bin1<<8)+bin0;
 102   1      
 103   1      }
 104          
 105          
 106          void measure_tin()
 107          {
 108   1              three=1;
 109   1              two=0;
 110   1              one=0;
 111   1              tin0=P0;
 112   1      
 113   1              three=1;
 114   1              two=0;
 115   1              one=1;
 116   1              tin1=P0;
 117   1      
C51 COMPILER V8.02   ANGLE_MEASURE                                                         01/14/2009 21:15:28 PAGE 3   

 118   1              three=1;
 119   1              two=1;
 120   1              one=0;
 121   1              tin2=P0;
 122   1      
 123   1              three=1;
 124   1              two=1;
 125   1              one=1;
 126   1              tin3=P0;
 127   1      
 128   1              tin=(tin3<<24)+(tin2<<16)+(tin1<<8)+tin0;
 129   1      }
 130          
 131          void frequence()
 132          {
 133   1      //                      fcon=1;
 134   1       //           phasecon=0;
 135   1                              spul=1;
 136   1                              clr=1;
 137   1                              delay(20);
 138   1                              clr=0;
 139   1                              cl=1;
 140   1                              delay(1000);
 141   1                              cl=0;           
 142   1                      while(start);
 143   1                              measure_bin();
 144   1                              if(bin==0)
 145   1                              {
 146   2                                 frequence();
 147   2                              }
 148   1                              if(j==1)  //第一次测的数据不准,第二次才开始正确
 149   1                              {
 150   2                                  j=0;
 151   2                              frequence();
 152   2                              }  
 153   1                              measure_tin();
 154   1                              Fx=(50000000*tin)/(bin*0.01);
 155   1                              TT=bin/(50*tin);
 156   1                              five_1=Fx/10000000;
 157   1                              four_1=Fx%10000000/1000000;
 158   1                              three_1=Fx%10000000%1000000/100000;
 159   1                              two_1=Fx%10000000%1000000%100000/10000;
 160   1                              one_1=Fx%10000000%1000000%100000%10000/1000;
 161   1                              zero_1=Fx%10000000%1000000%100000%10000%1000/100;
 162   1                              point_1=Fx%10000000%1000000%100000%10000%1000%100/10;
 163   1                              point_2=Fx%10000000%1000000%100000%10000%1000%100%10;
 164   1                              write_command(0x01);
 165   1                              delay(10);
 166   1                              write_command(0x80);
 167   1                              write_data('F');
 168   1                              write_data(':');
 169   1                              write_data(table[five_1]);
 170   1                              write_data(table[four_1]);
 171   1                              write_data(table[three_1]);
 172   1                              write_data(table[two_1]);
 173   1                              write_data(table[one_1]);
 174   1                              write_data(table[zero_1]);
 175   1                              write_data(table[10]);
 176   1                              write_data(table[point_1]);
 177   1                              write_data(table[point_2]);
 178   1                              write_data('H');
 179   1                              write_data('z');
C51 COMPILER V8.02   ANGLE_MEASURE                                                         01/14/2009 21:15:28 PAGE 4   

 180   1      
 181   1                          five_5=TT/100000;
 182   1                              four_5=TT%100000/10000;
 183   1                              three_5=TT%100000%10000/1000;

⌨️ 快捷键说明

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