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

📄 frequency.lst

📁 里面有c和单片机的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   FREQUENCY                                                             07/31/2007 13:31:02 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FREQUENCY
OBJECT MODULE PLACED IN E:\试验版~1\C\FREQUENCY.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE E:\试验版~1\C\FREQUENCY.C DB SB OE

stmt level    source

   1          # include<reg52.h>
   2          # include<stdio.h>
   3          # include<intrins.h>
   4          
   5          # define uchar unsigned char
   6          # define uint unsigned int
   7          
   8          uint n0;       //计数次数
   9          uint n1;
  10          uint n2;
  11          uint n3;
  12          uint n4;
  13          uint n5;
  14          
  15          uchar n6;        //产生0.4S阀门
  16          
  17          float s;
  18          uchar a[2];      //装整数
  19          uchar b[6];      //装小数
  20          
  21          uchar cmd;
  22          uchar state;     //模式信号
  23          bit flag0;       //测频段信号
  24          bit flag1;       //占空比模式下测脉宽信号
  25          
  26          //*********************************************************//
  27          //                  延时子程序                             //
  28          //*********************************************************//
  29          void delay(unsigned char n)
  30          {unsigned char i;
  31   1       for(i=0;i<n;i++);
  32   1      }
  33          
  34          //*********************************************************//
  35          //                  按键子程序                             //
  36          //*********************************************************//
  37          void key()
  38          {
  39   1      unsigned char key;
  40   1      key=(P2&&0X0F);
  41   1      delay(711);
  42   1      delay(711);
  43   1      switch(key)
  44   1      {case 0X0E: state=1;
  45   2                  break;
  46   2       case 0X0D: state=2;
  47   2                  break;
  48   2       case 0X0B: state=3;
  49   2                  break;
  50   2       case 0X07: state=4;
  51   2                  break;
  52   2       default:   state=0;
  53   2       }
  54   1      }
  55          //*********************************************************//
C51 COMPILER V7.06   FREQUENCY                                                             07/31/2007 13:31:02 PAGE 2   

  56          //               数据处理子程序                            //
  57          //*********************************************************//
  58          void data_process()
  59          {float tcy=12/10*1000000;
  60   1      
  61   1      switch(state)
  62   1      {case 1: if(cmd==0X40)
  63   2               s=1/(2*tcy*n3/2);               //HZ
  64   2               else if(cmd==0X20)
  65   2               s=1/(2*tcy*n3/1024*1000);      //KHZ
  66   2               else if(cmd==0X10)
  67   2               s=1/(2*tcy*n3/131072*1000000);  //MHZ
  68   2               break;
  69   2       case 2: if(P1==0X40)
  70   2               s=2*tcy*n3/2;                //s
  71   2               else if(P1==0X20)
  72   2               s=2*tcy*n3/1024*1000;       //ms
  73   2               else if(P1==0X10)
  74   2               s=2*tcy*n3/131072*1000000;   //us
  75   2               break;
  76   2       case 3: s=tcy*n5;
  77   2               break;
  78   2       case 4: if(cmd==0X40)
  79   2               s=n5/n3;
  80   2               else if(cmd==0x20)
  81   2               s=512*n5/n3;
  82   2               else if(cmd==0x10)
  83   2               s=65536*n5/n3;
  84   2       }
  85   1      }
  86          //*********************************************************//
  87          //                       数据转换子程序                    //
  88          //*********************************************************//
  89          void zhuan_huan()
  90          {a[0]=s/10;
  91   1       a[1]=s/1-a[0]*10;
  92   1       s=(s-a[0]*10-a[1])*1000000;
  93   1       b[0]=s/100000;
  94   1       b[1]=s/10000-b[0]*10;
  95   1       b[2]=s/1000-b[1]*10-b[0]*100;
  96   1       b[3]=s/100-b[2]*10-b[1]*100-b[0]*1000;
  97   1       b[4]=s/10-b[3]*10-b[2]*100-b[1]*1000-b[0]*10000;
  98   1       b[5]=s/1-b[4]*10-b[3]*100-b[2]*1000-b[1]*10000-b[0]*100000;
  99   1      }
 100          //*********************************************************//
 101          //               LCD显示子程序                             //
 102          //*********************************************************//
 103          sbit dc=P1^4;                     //RS
 104          sbit rw=P1^5;                     //RW
 105          sbit cs=P1^6;                     //E
 106          sfr  lcdbus=0x80;                 //D0--D7
 107          
 108          void soft_nop(){}
 109          /****************检查LCD忙*******************/
 110          bit lcd_checkbusy()                    /*检查LCD 忙*/
 111          {register lcdstate;
 112   1       dc=0;                                 /*dc=1为数据,=0 为命令.*/
 113   1       rw=1;                                 /*rw=1为读,=0为写.*/
 114   1       cs=1;                                 /*cs=1选通.*/
 115   1       soft_nop();
 116   1       lcdstate=lcdbus;
 117   1       cs=0;
C51 COMPILER V7.06   FREQUENCY                                                             07/31/2007 13:31:02 PAGE 3   

 118   1      return((bit)(lcdstate&0x80));
 119   1      }
 120          /***************写LCD命令*******************/
 121          void lcd_wrcmd(uchar lcdcmd)
 122          {while(lcd_checkbusy());
 123   1       dc=0;                                 /*dc=1为数据,=0 为命令.*/
 124   1       rw=0;                                 /*rw=1为读,=0为写.*/
 125   1       cs=1;                                 /*cs=1选通.*/
 126   1       lcdbus=lcdcmd;
 127   1       soft_nop();
 128   1       cs=0;
 129   1      }
 130          /**************在当前显示位置显示数据********************/
 131          void lcd_wrdata(char lcddata)
 132          {while(lcd_checkbusy());
 133   1       dc=1;                       /*dc=1为数据,=0 为命令.*/
 134   1       rw=0;                       /*rw=1为读,=0为写.*/
 135   1       cs=1;                       /*cs=1选通.*/
 136   1       lcdbus=lcddata;
 137   1       soft_nop();
 138   1       cs=0;
 139   1      
 140   1      }
 141          /*************在当前显示位置显示LCD 字符串***************/
 142          void lcd_string(char *strpoint)
 143          { register i=0;
 144   1        while(strpoint[i]!=0)
 145   1       {lcd_wrdata(strpoint[i]);
 146   2        i++;
 147   2       }
 148   1      }
 149          /**********************初始化************************/
 150          void lcd_init()
 151          {lcd_wrcmd(0x38);              /*设置8 位格式,2行,5*7*/
 152   1       lcd_wrcmd(0x0c);              /*整体显示,关光标,不闪烁*/
 153   1       lcd_wrcmd(0x06);              /*设定输入方式,增量不移位*/
 154   1       lcd_wrcmd(0x01);              /*清除显示*/
 155   1      }
 156          /***********************主函数***********************/
 157          void lcd()
 158          {uchar i;
 159   1       lcd_init();
 160   1       delay(711);
 161   1       delay(711);
 162   1      
 163   1      switch(state)                      //送模式和单位
 164   1      {
 165   2       case 1: lcd_string("FREQUENCY");
 166   2               lcd_wrcmd(0X8C);
 167   2               if(cmd==0X40)
 168   2               lcd_string("HZ");
 169   2               else if(cmd==0X20)
 170   2               lcd_string("KHZ");
 171   2               else
 172   2               lcd_string("MHZ");
 173   2               break;
 174   2       case 2: lcd_string("PERIOD");
 175   2               lcd_wrcmd(0X8C);
 176   2               if(cmd==0X40)
 177   2               lcd_string("S");
 178   2               else if(cmd==0X20)
 179   2               lcd_string("MS");
C51 COMPILER V7.06   FREQUENCY                                                             07/31/2007 13:31:02 PAGE 4   

 180   2               else
 181   2               lcd_string("US");
 182   2               break;
 183   2       case 3: lcd_string("MAIKUAN");
 184   2               lcd_wrcmd(0X8C);
 185   2               lcd_string("s");
 186   2               break;
 187   2       case 4: lcd_string("ZHANKONGBI");
 188   2      }
 189   1      
 190   1      lcd_wrcmd(0XC3);   //送整数
 191   1      for(i=0;i<2;i++)
 192   1      {a[i]=a[i]+0X30;
 193   2       lcd_wrdata(a[i]);
 194   2      }
 195   1      

⌨️ 快捷键说明

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