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

📄 f_detecter.lst

📁 F_Dtecter 单片机频率计 精确度1%以上
💻 LST
字号:
C51 COMPILER V7.01  F_DETECTER                                                             06/15/2007 16:40:51 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE F_DETECTER
OBJECT MODULE PLACED IN F_Detecter.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE F_Detecter.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /************************************************************
   2          *频率计
   3          *12M晶振,rs=P0^5,rw=P0^6,en=P0^7,Dx=P2
   4          *Author:熊伟华
   5          *2007
   6          *************************************************************/
   7          #include <reg51.h>
   8          #include <intrins.h>
   9          #define uchar unsigned char
  10          #define uint unsigned int
  11          
  12          uchar Dis0[]={" Welcome to the "},Dis1[]={"Frequency Detect"},Dis2[]={"The Frequency is"},Dis3[]={"0123456
             -789Hz"},u;
  13          
  14          sbit rs=P0^5;
  15          sbit rw=P0^6;
  16          sbit en=P0^7;
  17          
  18          uchar temp[8];
  19          uchar T0count=0;
  20          uchar timecount=0;
  21          bit flag;
  22          unsigned long x;
  23          
  24          void delay(uchar t);
  25          void LCD_init();
  26          uchar LCD_read_state();
  27          void LCD_write_order(uchar temp0);
  28          void LCD_read_date();
  29          void LCD_write_date(uchar temp1);
  30          void LCD_pos(uchar pos);
  31          
  32          /************************************************************
  33          *Function:延时处理
  34          *parameter:
  35          *Return:
  36          *Modify:
  37          *************************************************************/
  38          void delay(uchar t)
  39          { uchar tb;
  40   1        while(t--)
  41   1         { for (tb=0;tb<127;tb++)
  42   2             {_nop_();
  43   3                  _nop_();
  44   3                      _nop_();                                                                                                
             -              
  45   3                      _nop_();}
  46   2         }
  47   1      }
  48          
  49          /************************************************************
  50          *Function:1602初始化
  51          *parameter:
  52          *Return:
  53          *Modify:
C51 COMPILER V7.01  F_DETECTER                                                             06/15/2007 16:40:51 PAGE 2   

  54          *************************************************************/
  55          void LCD_init()
  56          {rs=0;
  57   1       _nop_();
  58   1       rw=0;
  59   1       _nop_();
  60   1       en=1;
  61   1       _nop_();
  62   1       LCD_write_order(0x38);
  63   1       delay(15);
  64   1       LCD_write_order(0x0c);
  65   1       delay(5);
  66   1       LCD_write_order(0x06);
  67   1       _nop_();
  68   1       en=0;
  69   1      }
  70          /************************************************************
  71          *Function:读1602的状态
  72          *parameter:
  73          *Return:0为空闲,1为忙
  74          *Modify:
  75          *************************************************************/
  76          uchar LCD_read_state(void)
  77          { uchar u;
  78   1        rs=0;
  79   1        _nop_();
  80   1        rw=1;
  81   1        _nop_();
  82   1        en=1;
  83   1        _nop_();
  84   1        u=P2;
  85   1        return(u);
  86   1        _nop_();
  87   1        en=0;
  88   1      }
  89          /************************************************************
  90          *Function:向1602写命令字
  91          *parameter:
  92          *Return:
  93          *Modify:
  94          *************************************************************/
  95          void LCD_write_order(uchar temp)
  96          { LCD_read_state();
  97   1        _nop_();
  98   1        if ((u&&0x80)==0)
  99   1         { rs=0;
 100   2           _nop_();
 101   2           rw=0;
 102   2           _nop_();
 103   2           en=1;
 104   2           _nop_();
 105   2           P2=temp;
 106   2         }
 107   1        _nop_();
 108   1        en=0;
 109   1      }
 110          /************************************************************
 111          *Function:从1602读数据
 112          *parameter:
 113          *Return:
 114          *Modify:
 115          *************************************************************/
C51 COMPILER V7.01  F_DETECTER                                                             06/15/2007 16:40:51 PAGE 3   

 116          void LCD_read_date()
 117          { LCD_read_state();
 118   1        _nop_();
 119   1        if ((u&&0x80)==0)
 120   1         { rs=1;
 121   2           _nop_();
 122   2           rw=1;
 123   2           _nop_();
 124   2           en=1;
 125   2           _nop_();
 126   2         }
 127   1        _nop_();
 128   1        en=0;
 129   1      }
 130          /************************************************************
 131          *Function:向1602写显示数据
 132          *parameter:
 133          *Return:
 134          *Modify:
 135          *************************************************************/
 136          void LCD_write_date(uchar temp1)
 137          { LCD_read_state();
 138   1        _nop_();
 139   1        if ((u&&0x80)==0)
 140   1         { rs=1;
 141   2           _nop_();
 142   2           rw=0;
 143   2           _nop_();
 144   2           en=1;
 145   2           _nop_();
 146   2           P2=temp1;
 147   2         }
 148   1        _nop_();
 149   1        en=0;
 150   1      }
 151          /************************************************************
 152          *Function:显示位置 00-0f为第一行,40-4f为第二行
 153          *parameter:
 154          *Return:
 155          *Modify:
 156          *************************************************************/
 157          void LCD_pos(uchar pos)
 158          {LCD_write_order(pos|0x80);}
 159          /************************************************************
 160          *Function:显示欢迎界面
 161          *parameter:
 162          *Return:
 163          *Modify:
 164          *************************************************************/
 165          void LCD_Dis()
 166          { uchar i,temp0=0x00,temp1=0x40; 
 167   1        LCD_init();
 168   1        for (i=0;i<=15;i++)
 169   1         { LCD_pos(temp0);
 170   2           delay(1);
 171   2           LCD_write_date(Dis0[i]);
 172   2               delay(1);
 173   2               LCD_pos(temp1);
 174   2               delay(1);
 175   2               LCD_write_date(Dis1[i]);
 176   2               temp0++;
 177   2               temp1++;
C51 COMPILER V7.01  F_DETECTER                                                             06/15/2007 16:40:51 PAGE 4   

 178   2         }
 179   1        delay(1000);
 180   1        delay(1000);
 181   1        delay(1000);
 182   1        delay(1000);
 183   1        temp0=0x00;
 184   1        LCD_write_order(0x01);
 185   1        for (i=0;i<=15;i++)
 186   1         { LCD_pos(temp0);
 187   2           delay(1);
 188   2           LCD_write_date(Dis2[i]);
 189   2               temp0++;
 190   2         }
 191   1      }
 192          /************************************************************
 193          *Function:定时器/计数器初始化
 194          *parameter:
 195          *Return:
 196          *Modify:
 197          *************************************************************/
 198          void timer_init()
 199          { TMOD=0x15;
 200   1        TH0=0;
 201   1        TL0=0;
 202   1        TH1=(65536-4000)/256;
 203   1        TL1=(65536-4000)%256;
 204   1        TR1=1;
 205   1        TR0=1;
 206   1        ET0=1;
 207   1        ET1=1;
 208   1        EA=1;
 209   1      }
 210          /************************************************************
 211          *Function:中断服务程序
 212          *parameter:
 213          *Return:
 214          *Modify:
 215          *************************************************************/
 216          void t0(void) interrupt 1 using 0
 217          {
 218   1        T0count++;
 219   1      }
 220          void t1(void) interrupt 3 using 0
 221          {
 222   1        TH1=0x3c;
 223   1        TL1=0xb0;
 224   1        timecount++;
 225   1        if(timecount==60)
 226   1          {
 227   2            TR0=0;
 228   2            timecount=0;
 229   2            flag=1;
 230   2          }
 231   1      }
 232          /************************************************************
 233          *Function:中断服务程序
 234          *parameter:
 235          *Return:
 236          *Modify:
 237          *************************************************************/
 238          void counter ()
 239          {
C51 COMPILER V7.01  F_DETECTER                                                             06/15/2007 16:40:51 PAGE 5   

 240   1         while(1)
 241   1          {uchar i=0,pos=0x49;
 242   2           if(flag==1)
 243   2             {
 244   3               flag=0;
 245   3               x=T0count*65536+TH0*256+TL0;
 246   3               for(i=0;i<8;i++)
 247   3                 {
 248   4                   temp[i]=0;
 249   4                 }
 250   3               i=0;
 251   3                       x=x/3;
 252   3               while(x/10)
 253   3                 {
 254   4                   temp[i]=x%10;
 255   4                   x=x/10;
 256   4                   i++;
 257   4                 }
 258   3               temp[i]=x;
 259   3                       i=0;
 260   3               LCD_pos(0x4a);
 261   3               LCD_write_date(Dis3[10]);
 262   3                       LCD_pos(0x4b);
 263   3                       LCD_write_date(Dis3[11]);
 264   3                       for (i=0;i<=5;i++)
 265   3                { LCD_pos(pos);
 266   4                  delay(1);
 267   4                  LCD_write_date(Dis3[temp[i]]);
 268   4                      pos--;
 269   4                }
 270   3               timecount=0;
 271   3               T0count=0;
 272   3               TH0=0;
 273   3               TL0=0;
 274   3               TR0=1;
 275   3             }
 276   2              }
 277   1      }
 278          /************************************************************
 279          *Function:主程序
 280          *parameter:
 281          *Return:
 282          *Modify:
 283          *************************************************************/
 284          void main()
 285          {LCD_Dis();
 286   1       timer_init();
 287   1       counter();
 288   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    619    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     79       4
   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 + -