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

📄 test_int0.lst

📁 等精度测频率、测相位 用c语言编程 简单方便
💻 LST
字号:
C51 COMPILER V8.01   TEST_INT0                                                             04/20/2009 19:41:22 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE TEST_INT0
OBJECT MODULE PLACED IN Test_int0.OBJ
COMPILER INVOKED BY: F:\PROGRAM\C51\BIN\C51.EXE Test_int0.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include <absacc.h>
   3          #define DPTR XBYTE[0X6000]
   4          
   5          unsigned char DISPBUF1,DISPBUF2,DISPBUF3,DISPBUF4,TIME1S_count,countn0,TIME0_5S_count;
   6          unsigned char bufth0,buftl0,bufn0,n0,BUFTH1,BUFTL1,BUFn1,n1;
   7          unsigned char keynum;
   8          bit     flag_KHz,flag1s,flag_countT0,flag_over0,flag_over1,flag0_5s,flag_open0;
   9          
  10          void mDelay(unsigned int Delay);
  11          void display(void);
  12          unsigned char keyscan(void);
  13          void readkey(unsigned char date);
  14          
  15          sbit P3_2=P3^2;
  16          sbit P3_3=P3^3;
  17          sbit P3_0=P3^0;
  18          sbit P3_1=P3^1;
  19          sbit P3_7=P3^7;
  20           
  21          ////////////////////////////
  22          void int00() interrupt 0 using 0
  23          {
  24   1      //      P3_7=~P3_7;
  25   1              TR1=1;
  26   1              bufth0=TH0;buftl0=TL0;bufn0=n0;
  27   1              TH0=0;TL0=0;n0=0;
  28   1              flag_over0=1; 
  29   1      }
  30          
  31          void int11() interrupt 2 using 2
  32          {       TR1=0;
  33   1              BUFTH1=TH1;BUFTL1=TL1;BUFn1=n1;
  34   1              TH1=0;TL1=0;n1=0;
  35   1              flag_over1=1;
  36   1      }
  37          
  38          void time0() interrupt 1 using 1
  39          {n0++;countn0++;}
  40          
  41          void time1() interrupt 3 using 3 
  42          {n1++;}
  43          
  44          void time2() interrupt 5 using 3
  45          {
  46   1              TF2=0;
  47   1              if(flag_countT0)
  48   1              {       TIME1S_count++;
  49   2                      if(TIME1S_count==170)
  50   2                              {TR0=0;TIME1S_count=0;flag1s=1;}
  51   2                      display();
  52   2              }
  53   1              else
  54   1              {       TIME0_5S_count++;
  55   2                      if(TIME0_5S_count==80)
C51 COMPILER V8.01   TEST_INT0                                                             04/20/2009 19:41:22 PAGE 2   

  56   2                      {TIME0_5S_count=0;flag0_5s=1;}
  57   2              }
  58   1      }
  59           
  60          main()
  61          {       unsigned long TMPA,P0,P1=0;
  62   1              float f,p; 
  63   1      
  64   1              TMOD=0X19;//T0设置为门控定时方式1,T1为定时方式1
  65   1              ET0=1;  
  66   1              EX0=1;
  67   1              IT0=1;
  68   1              TR0=1;  
  69   1              TH0=0;
  70   1              TL0=0;
  71   1      
  72   1              RCAP2H=0xe8;
  73   1              RCAP2L=0xef;//T2的定时初值,用于数码管扫描与1s时间的产生
  74   1              ET2=1;
  75   1              TR2=1;
  76   1      
  77   1              ET1=1;
  78   1              EX1=1;
  79   1              IT1=1;
  80   1              TH1=0;
  81   1              TL1=0;
  82   1      
  83   1              EA=1;
  84   1      
  85   1              flag_KHz=0;
  86   1              P3_3=1;
  87   1              P3_2=1;
  88   1              keynum=1;
  89   1              while(1)
  90   1              { 
  91   2                      while((keynum==1)&&flag_KHz)
  92   2                      {       readkey(keyscan());
  93   3                              flag_countT0=1;
  94   3                              if(flag1s==1)
  95   3                              {
  96   4                                      flag1s=0;
  97   4                                      f=TH0*256+TL0+65536*countn0;
  98   4                                      if(f>=100000)
  99   4                                              {f=f/1000;flag_KHz=1;} 
 100   4                                      else if(f>=10000)
 101   4                                              {f=f/100;flag_KHz=1;} 
 102   4                                      else if(f>=1000)
 103   4                                              {f=f/10;flag_KHz=1;}     
 104   4                                      else {flag_KHz=0;}
 105   4                                      
 106   4                                      TMPA=(unsigned long)(f*10);
 107   4                                      DISPBUF1=TMPA/1000;
 108   4                                      DISPBUF2=TMPA%1000/100;
 109   4                                      DISPBUF3=TMPA%100/10;
 110   4                                      DISPBUF4=TMPA%10;
 111   4                                      
 112   4                                      TIME1S_count=0;
 113   4                                      countn0=0;
 114   4                                      TH0=0;
 115   4                                      TL0=0;
 116   4                                      TR0=1;
 117   4                                      display();
C51 COMPILER V8.01   TEST_INT0                                                             04/20/2009 19:41:22 PAGE 3   

 118   4                              }
 119   3                              if(!flag_KHz|(keynum>1))
 120   3                                      {EX0=1;TMOD=0X09;}       
 121   3                      } 
 122   2                      while(!flag_KHz)
 123   2                      {       readkey(keyscan());
 124   3                              flag_countT0=0;
 125   3                              if(flag0_5s==1)
 126   3                              {       
 127   4                                      /*if(!flag_open0)
 128   4                                      {EX0=1;flag_over0=0;EX1=1;flag_over1=0;flag_open0=1;}
 129   4                                      if(flag_over1)
 130   4                                      {EX0=0;EX1=0;flag_open0=0;}      */
 131   4                              /*      if(flag_open0&flag_over1)
 132   4                                              {EX0=0;EX1=0;flag_open0=0;}
 133   4                                      else 
 134   4                                              {EX0=1;EX1=1;flag_open0=1;}      */
 135   4                                      if(flag_over0)
 136   4                                      {       P0=bufth0*256+buftl0+65536*bufn0+5;
 137   5                                              if(keynum==1)
 138   5                                              {       display();
 139   6                                                      f=5000000./P0;
 140   6                                                      if(f<10000)
 141   6                                                              {flag_KHz=0;}
 142   6                                                      else if(f<15000)                                  
 143   6                                                              {f=f/10;flag_KHz=0;}
 144   6                                                      else if(f<100000)
 145   6                                                              {f=f/10;flag_KHz=1;}
 146   6                                                      else if(f<1000000)
 147   6                                                              {f=f/100;flag_KHz=1;}
 148   6                                                      else
 149   6                                                              {f=f/1000;flag_KHz=1;}  
 150   6                                                      TMPA=(unsigned long)f;
 151   6                                                      DISPBUF1=TMPA/1000;
 152   6                                                      DISPBUF2=TMPA%1000/100;
 153   6                                                      DISPBUF3=TMPA%100/10;
 154   6                                                      DISPBUF4=TMPA%10;
 155   6                                              }
 156   5                                              flag_over0=0;
 157   5                                              
 158   5                                      }
 159   4                                      else 
 160   4                                              {TH0=0;TL0=0;n0=0;TR0=1;EX0=1;}
 161   4                                      if(keynum>1)
 162   4                                              if(flag_over1)
 163   4                                              {
 164   5                                                      flag_over1=0;
 165   5                                                      P1=BUFTH1*256+BUFTL1+BUFn1*65536;
 166   5                                                      p=P1*1800/P0;
 167   5                                                                                              
 168   5                                                      TMPA=(unsigned long)p;
 169   5                                                      DISPBUF1=TMPA/1000;
 170   5                                                      DISPBUF2=TMPA%1000/100;
 171   5                                                      DISPBUF3=TMPA%100/10;
 172   5                                                      DISPBUF4=TMPA%10;
 173   5                                              }
 174   4                                      TIME0_5S_count=0;
 175   4                                      flag0_5s=0;
 176   4                              }
 177   3                              display();
 178   3                              if(keynum==1)   
 179   3                                      if(flag_KHz)
C51 COMPILER V8.01   TEST_INT0                                                             04/20/2009 19:41:22 PAGE 4   

 180   3                                              {flag1s=0;EX0=0;TMOD=0X15;}  
 181   3                      }
 182   2              }         
 183   1      }
 184          //////////////////////////////////////
 185          void mDelay(unsigned int Delay) 
 186          {       unsigned int i;
 187   1              for(;Delay>0;Delay--)
 188   1              {       for(i=0;i<124;i++)
 189   2                      {;}
 190   2              }
 191   1      }
 192          /////////////////////////////////////
 193          void display(void)
 194          {
 195   1        DPTR=(DISPBUF1|0X70);
 196   1        mDelay(1);
 197   1        DPTR=(DISPBUF2|0Xb0);
 198   1        mDelay(1);
 199   1        DPTR=(DISPBUF3|0Xd0);
 200   1        mDelay(1);
 201   1        DPTR=(DISPBUF4|0Xe0);
 202   1        mDelay(1);
 203   1        DPTR=0Xf0;
 204   1        mDelay(1);
 205   1      }
 206          unsigned char keyscan(void)
 207          { unsigned char test,tmp;
 208   1        P1=0xf0;
 209   1        if((P1&0xf0)!=0xf0)
 210   1        {     mDelay(1);
 211   2          if((P1&0xf0)!=0xf0)
 212   2              { test=0xfe;
 213   3                while((test&0x10)!=0)
 214   3                {     P1=test;
 215   4                  if((P1&0xf0)!=0xf0)
 216   4                      { tmp=(P1&0xf0)|0x0f;
 217   5                        return(~(test)+~(tmp));
 218   5                      }
 219   4              else test=(test<<1)|0x01;
 220   4                }
 221   3              }
 222   2        }
 223   1        return(0);
 224   1      }
 225          void readkey(unsigned char date)
 226           { switch(date)
 227   1        {     case 0X11: keynum=1;break;
 228   2          case 0X21: keynum=2;break;
 229   2              case 0X41: keynum=3;break;
 230   2              case 0X81: keynum=4;break;
 231   2              case 0X12: keynum=5;break;
 232   2              case 0X22: keynum=6;break;
 233   2              case 0X42: keynum=7;break;
 234   2              case 0x82: keynum=8;break;
 235   2              case 0x14: keynum=9;break;
 236   2              case 0x24: keynum=10;break;
 237   2              case 0x44: keynum=11;break;
 238   2              case 0x84: keynum=12;break;
 239   2              case 0x18: keynum=13;break;
 240   2              case 0x28: keynum=14;break;
 241   2              case 0x48: keynum=15;break;
C51 COMPILER V8.01   TEST_INT0                                                             04/20/2009 19:41:22 PAGE 5   

 242   2              case 0x88: keynum=16;break;
 243   2      //      case 0x00: keynum=0;break;
 244   2        }
 245   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1544    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      16
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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