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

📄 main.lst

📁 频率测量程序
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  11/29/2007 11:23:34 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************************
   2          *                                                                           *
   3          * File:         Main.c                                                      *
   4          *                                                                           *
   5          * Author:       王                                                          *
   6          *                                                                           *
   7          * Compiler:     KEIL C51 V7.01                              
   8          *                                                                           *
   9          * Description:  CPU=AT89C2051    11.0592M HZ                                *
  10          *                                                                           *
  11          * Date:         2007/03/28                                                  *
  12          *                                                                           *
  13          *****************************************************************************
  14          *                                                                           *
  15          * Version | Date     | Description                                          *
  16          * --------+----------+----------------------------------------------------- *
  17          * V1.0    | 07.03.28 | 原始文本                                             *
  18          *                                                                           *
  19          ****************************************************************************/
  20          #define Main_GLOBALS
  21          #include "includes.h"
  22          bit FlagS;
  23          
  24          /****************************************************************************
  25          *                                                                           *
  26          * Function:     main                                                        *
  27          *                                                                           *
  28          ****************************************************************************/
  29          void main(void)
  30          {
  31   1        Uint32 FREQ_Buffer;
  32   1        Uchar buffer;
  33   1        Uint16 TimerBuf;
  34   1        char i;
  35   1        init();
  36   1        while(1)
  37   1        {
  38   2          if(TestOver==0)
  39   2              {
  40   3                 TR0=0;
  41   3                TR1=0;
  42   3            TestOver=1; 
  43   3            ten=1;
  44   3                hud=0;
  45   3            Test=1;
  46   3            TL1=0;
  47   3                TH1=0;
  48   3            TH0=TH0_VAL;
  49   3            TL0=TL0_VAL;
  50   3                Over_CNT=0;
  51   3            uc1s=19;//测试频率50ms
  52   3            TR0=1;
  53   3                TR1=1;
  54   3              }
  55   2          if(T1sOver)
C51 COMPILER V7.50   MAIN                                                                  11/29/2007 11:23:34 PAGE 2   

  56   2              {
  57   3                TR0=0;
  58   3                TR1=0;
  59   3                T1sOver=0;
  60   3            if(Test)
  61   3                {
  62   4                   Test=0;
  63   4                       if(Over_CNT==0)
  64   4                       {
  65   5                         TimerBuf=TL1+TH1*256;
  66   5                 if(TimerBuf<31)//FREQ<200k/s
  67   5                {
  68   6                          SingleFRE=1;//置实频标志
  69   6                           Buf=1;
  70   6                  ten=0;      //实频切换
  71   6                          hud=0;
  72   6                        }
  73   5                        else if((TimerBuf>30)&&TimerBuf<70)//FREQ<200k/s
  74   5                        {
  75   6                           Buf=16;
  76   6                               ten=0;      //切换为16倍分频
  77   6                           hud=1;
  78   6                        }
  79   5                        else
  80   5                        {
  81   6                  SingleFRE=0;
  82   6                          Buf=256;
  83   6                  ten=1;      //切换为100倍分频
  84   6                          hud=0;
  85   6                        }
  86   5                       }
  87   4                       else
  88   4                       {
  89   5                         SingleFRE=0;
  90   5                         Buf=256;
  91   5                 ten=1;      //切换为100倍分频
  92   5                         hud=0;
  93   5                       }
  94   4               TL1=0;
  95   4                   TH1=0;
  96   4               TH0=TH0_VAL;
  97   4               TL0=TL0_VAL;
  98   4               Over_CNT=0;
  99   4               uc1s=0;       //测试频率1s
 100   4                       TR0=1;
 101   4               TR1=1;
 102   4                }
 103   3                else
 104   3                {
 105   4              TestOver=0;
 106   4                  FREQ=Over_CNT*65536+TH1*256+TL1;
 107   4                  FREQ=FREQ*Buf;
 108   4           }
 109   3            Over_CNT=0;
 110   3           
 111   3              }
 112   2          if(FREQ!=Old_FREQ)     //频率有变化显示
 113   2              {
 114   3                Old_FREQ=FREQ;
 115   3                FREQ_Buffer=FREQ;
 116   3                for(i=0;i<8;i++)
 117   3                {
C51 COMPILER V7.50   MAIN                                                                  11/29/2007 11:23:34 PAGE 3   

 118   4              Led[i]=FREQ_Buffer%10;
 119   4                      FREQ_Buffer=FREQ_Buffer/10;
 120   4                }
 121   3            if(FREQ>99999)
 122   3            {
 123   4              Led_KHZ=ON;
 124   4              Led_HZ=OFF;
 125   4              buffer=FREQ/100000;
 126   4              if(buffer>9)      //FREQ>=1M
 127   4              {
 128   5                for(i=0;i<5;i++)
 129   5                        {
 130   6                          Led[i]=Led[i+2];
 131   6                        }
 132   5                        Led[1]=Led[1]|0x80;
 133   5              }
 134   4              else        //FREQ<1m && FREQ>=100000
 135   4              {
 136   5                for(i=0;i<5;i++)
 137   5                        {
 138   6                          Led[i]=Led[i+1];
 139   6                        }
 140   5                        Led[2]=Led[2]|0x80;         
 141   5              }
 142   4            }
 143   3                else
 144   3                {
 145   4              Led_KHZ=OFF;
 146   4              Led_HZ=ON;
 147   4                }
 148   3            send_byte(CMD_RESET);//清除显示(消引)
 149   3            delay10ms(1);
 150   3                UnDis_Flag=0;
 151   3                for(i=4;i>=0;i--)
 152   3                {
 153   4                  if(Led[i]!=0)
 154   4              {
 155   5                DisNum(i,Led[i]);
 156   5                UnDis_Flag=1;          
 157   5                      }
 158   4                      else
 159   4                      {
 160   5                         if(UnDis_Flag==1) 
 161   5                         {
 162   6                          DisNum(i,0);
 163   6                         }
 164   5                      }
 165   4      
 166   4                }
 167   3            if(FREQ==0)
 168   3            {
 169   4               
 170   4                   
 171   4                    
 172   4                
 173   4                DisNum(0,1);
 174   4                
 175   4                      
 176   4              
 177   4            }
 178   3                
 179   3              }//END if(FREQ!=Old_FREQ)
C51 COMPILER V7.50   MAIN                                                                  11/29/2007 11:23:34 PAGE 4   

 180   2        }  //END while(1)
 181   1      }    //END main
 182          /****************************************************************************
 183          *                                                                           *
 184          * Function:     void init(void)                                             *
 185          *                                                                           *
 186          * Input:        -                                                           *
 187          * Output:       -                                                           *
 188          *                                                                           *
 189          * Description:  程序初始化                                                  *
 190          *                                                                           *
 191          ****************************************************************************/
 192          void init(void)
 193          {
 194   1        Uchar j;
 195   1        Uint16 Timer;
 196   1        EA=0;
 197   1        P1=0xff;
 198   1        P3=0xff;
 199   1        ten=1;
 200   1        hud=0;
 201   1        Old_FREQ=0;
 202   1        FREQ=0;
 203   1        Over_CNT=0;
 204   1        for (tmr=0;tmr<0x2000;tmr++); // 上电延时DisPlay
 205   1        send_byte(CMD_RESET);                 // 复位HD7279A
 206   1        send_byte(CMD_TEST);                  // 测试指令
 207   1        for (j=0;j<3;j++)                             // 延时约3秒
 208   1        {
 209   2              delay10ms(100);
 210   2        }
 211   1        send_byte(CMD_RESET);                 //清除显示
 212   1        DisNum(0,0);
 213   1        TMOD=0x51;                    //T0 timer 50ms,T1 计数。
 214   1        
 215   1      //  TMOD=0x21;                    //T0 timer 50ms,T1 定时。
 216   1        Timer=65536-Fosc*T/12;
 217   1        TH0_VAL=Timer/256;
 218   1        TL0_VAL=Timer%256;
 219   1        uc1s=0;
 220   1        T1sOver=0;
 221   1        TH0=TH0_VAL;
 222   1        TL0=TL0_VAL;
 223   1        TH1=0;
 224   1        TL1=0;
 225   1        ET0=1;
 226   1        ET1=1;
 227   1      
 228   1        TestOver=0;
 229   1        Test=0;
 230   1        SingleFRE=0;
 231   1        EA=1;
 232   1      }
 233          /****************************************************************************
 234          *                                                                           *
 235          * Function:     void Timer0(void) interrupt 1                               *
 236          *                                                                           *
 237          * Input:        -                                                           *
 238          * Output:       -                                                           *
 239          *                                                                           *
 240          * Description:  50ms中断                                                    *
 241          *                                                                           *
C51 COMPILER V7.50   MAIN                                                                  11/29/2007 11:23:34 PAGE 5   

 242          ****************************************************************************/
 243          void Timer0(void) interrupt 1
 244          {
 245   1         TR0=0;
 246   1         TH0=TH0_VAL;
 247   1         TL0=TL0_VAL;
 248   1         TR0=1;
 249   1           uc1s++;
 250   1           if(uc1s>19)
 251   1           {
 252   2             TR0=0;
 253   2                 TR1=0;
 254   2                 T1sOver=1;
 255   2           }
 256   1      }
 257          /****************************************************************************
 258          *                                                                           *
 259          * Function:     void Count1(void) interrupt 3                               *
 260          *                                                                           *
 261          * Input:        -                                                           *
 262          * Output:       -                                                           *
 263          *                                                                           *
 264          * Description:  T1 溢出中断                                                  *
 265          *                                                                           *
 266          ****************************************************************************/
 267          void Count1(void) interrupt 3
 268          {
 269   1        Over_CNT++;
 270   1      }
 271          void EXTINT1(void) interrupt 2
 272          {
 273   1        TR1=0;
 274   1        if(FlagS==1)
 275   1        {
 276   2           if(TH1!=0||TL0>20)
 277   2               {
 278   3                 Over_CNT++;
 279   3               }
 280   2        }
 281   1        else
 282   1        {
 283   2          TH1=0;
 284   2              TL1=0;
 285   2        }
 286   1        TR1=1;
 287   1        FlagS=!FlagS;
 288   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    849    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     35       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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