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

📄 freqtest.lst

📁 使用单片机AT89C51和1602字符液晶实现对信号频率的测试和显示(内含1602液晶显示、频率测试、和测频率的时序原理图
💻 LST
字号:
C51 COMPILER V8.02   FREQTEST                                                              01/12/2009 18:38:55 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE FREQTEST
OBJECT MODULE PLACED IN FreqTest.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE FreqTest.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG51.h>
   2          #include <1602_Drive.h>
   3          
   4          
   5          /******************************************************************
   6          *       定义接口:                                                                                                        *
   7          *       液晶显示器的接口“1602_Drive.h”库函数中已经定义                          *
   8          *       定义待测方波频率的接口:                                                                          *
   9          *       P3^5(T0口)做时钟输入接口;                                                                       *
  10          ******************************************************************/     
  11          
  12          //==================================================================
  13          //用测量脉冲次数的方法时定义的定时1s的参数
  14          #define THCLK 0x3c
  15          #define TLCLK 0xd4
  16          #define CntNum 20 
  17          //==================================================================
  18          //定义中间变量
  19          unsigned int Cnt;
  20          unsigned int tmp;
  21          unsigned char outcnt[8];
  22          //==================================================================
  23          //将测量的整数装换为标准有效的字符串
  24          void NumToChar(void)                    
  25          {       unsigned char i;
  26   1              outcnt[0]=tmp/10000+48;tmp%=10000;
  27   1              outcnt[1]=tmp/1000+48;tmp%=1000;
  28   1              outcnt[2]=tmp/100+48;tmp%=100;
  29   1              outcnt[3]=tmp/10+48;tmp%=10;
  30   1              outcnt[4]=tmp+48;
  31   1              outcnt[5]='H';
  32   1              outcnt[6]='z';
  33   1              outcnt[7]='\0'; 
  34   1              for(i=0;i<4;i++)                                //将字符中数字的最高有效位之前的'0'清空为‘ ’。
  35   1              {       if(outcnt[i]=='0')outcnt[i]=' ';                        
  36   2                      else break;
  37   2              }
  38   1      }
  39          //==================================================================
  40          //静态显示文本
  41          void Static_LCD_Print()                 
  42          {       GotoXY(0,0);
  43   1              Print("Freq is:");
  44   1              GotoXY(1,1);
  45   1              Print("Made by YeHao");
  46   1      }
  47          //==================================================================
  48          //动态显示数据
  49          void Dynamic_LCD_Print()                 
  50          {       NumToChar();
  51   1              GotoXY(9,0);
  52   1              Print(outcnt);
  53   1      }
  54          //==================================================================
  55          
C51 COMPILER V8.02   FREQTEST                                                              01/12/2009 18:38:55 PAGE 2   

  56          /******************************************************************
  57          *用定时计数器T0做脉冲计数器(下跳沿有效),开始与暂停由T1控制     *
  58          *定时计数器T1做定时中断,定时1s,定时开启置T0开始计数,定时完毕置 *
  59          *T0为暂停,关闭T1,读取计数数据并清空计数器,将计数数据装换为有效 *
  60          *规范的字符串显示后再开启T0和T1,进入下一轮测量                                   *
  61          ******************************************************************/
  62          void Initial_C51()
  63          {       TH0=TL0=0; 
  64   1              TH1=THCLK;
  65   1              TL1=TLCLK;
  66   1              TR0=0;
  67   1              TMOD=0x15;
  68   1              IE=0x88;
  69   1              TR1=0;
  70   1              Cnt=CntNum;
  71   1      }
  72          
  73          void timer1() interrupt 3          //定时50ms
  74          {       
  75   1              TH1=THCLK;
  76   1              TL1=TLCLK;
  77   1              if(--Cnt==0)
  78   1              {
  79   2              TR0=0;
  80   2              TR1=0;
  81   2              Cnt=CntNum;
  82   2              tmp=TH0*256+TL0;
  83   2              TH0=TL0=0;
  84   2              Dynamic_LCD_Print();
  85   2              //TR0=1;
  86   2              //TR1=1;
  87   2              }
  88   1      }
  89          
  90          void main(void)
  91          {
  92   1              Initial_C51();
  93   1              LCD_Initial();
  94   1              Static_LCD_Print();
  95   1              TR0=1;
  96   1              TR1=1;
  97   1              do{                             //空循环用于执行其他任务                
  98   2              }while(1);
  99   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    505    ----
   CONSTANT SIZE    =     23    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       1
   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 + -