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

📄 ad.lst

📁 89c2051 a/d模拟转数字转换 程序
💻 LST
字号:
C51 COMPILER V6.23a  AD                                                                    01/03/2004 17:10:15 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /************************************************/
   2          
   3          /************************************************/
   4          #include <REG52.H>
   5          #include <stdio.h>
   6          #include <intrins.h>
   7          
   8          #ifdef MONITOR51                         /* Debugging with Monitor-51 needs   */
              char code reserve [3] _at_ 0x23;         /* space for serial interrupt if     */
              #endif                                   /* Stop Exection with Serial Intr.   */
  11                                                   /* is enabled                        */
  12          const char Ledbuf[18]=/*digit convert table*//* 共阴*/
  13                  { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,           
  14                  /* 0     1     2     3     4     5     6     7     8     9 */
  15                   0x77, 0x7C, 0x39, 0x1000E, 0x79, 0x71, 0x00, 0x40 };
  16                  /* a    b     c     d     e     f           - */
  17          
  18          sbit SERIALIN=P0^0;
  19          sbit CLOCK=P0^2;
  20          sbit LATCH=P0^1;
  21          sbit P10=P1^0;
  22          sbit P11=P1^1;
  23          sbit P12=P1^2;
  24          sbit P14=P1^4;
  25          sbit P15=P1^5;
  26          sbit P16=P1^6;
  27          sbit P17=P1^7;
  28          sbit P32=P3^2;
  29          
  30          
  31          unsigned char th,tl;
  32          unsigned char coun;
  33          static unsigned int value_buf[5];
  34          unsigned int old_val;
  35           
  36          void Delay(unsigned int DelayTime)
  37          {
  38   1              if (DelayTime == 0)return;
  39   1                      while(DelayTime != 0)
  40   1                              {DelayTime--; }
  41   1      }
  42          
  43          void computer(unsigned int dt)
  44          { unsigned char cledtim[5];
  45   1        unsigned int dth,dtm,dtl;
  46   1        unsigned char i,j,temp;
  47   1              temp=0x01;
  48   1              cledtim[4]=Ledbuf[dt/10000];
  49   1              dth=dt%10000;
  50   1              cledtim[3]=Ledbuf[dth/1000];
  51   1              dtm=dth%1000;
  52   1              cledtim[2]=Ledbuf[dtm/100];
  53   1              cledtim[2]|=0x80;
  54   1              dtl=dtm%100;
  55   1              cledtim[1]=Ledbuf[dtl/10];
C51 COMPILER V6.23a  AD                                                                    01/03/2004 17:10:15 PAGE 2   

  56   1              cledtim[0]=Ledbuf[dtl%10];                                              
  57   1      
  58   1                 for (i=0; i<4; i++) {
  59   2            temp=cledtim[i];
  60   2            for (j=0;j<8;j++){
  61   3               temp=temp<<1; SERIALIN=CY; CLOCK=1; CLOCK=0;
  62   3                      }
  63   2              }LATCH=0; LATCH=1;                      
  64   1      }
  65          
  66          
  67           
  68          void bust_int(void) interrupt 0 using 1
  69          {unsigned int dc;
  70   1      EA=0;
  71   1      th=TH0;
  72   1      tl=TL0;
  73   1      coun++;
  74   1      if(coun==5){coun=0;}
  75   1              dc=0x0000;
  76   1              dc=th;
  77   1              dc<<=8;
  78   1              dc|=tl;
  79   1              dc/=2;
  80   1              dc-=10001;
  81   1              dc/=10;
  82   1          value_buf[coun]=dc;
  83   1      TH0=0x00;
  84   1      TL0=0x00;
  85   1      IE0=0;                      
  86   1      EA=1;                           //12/03
  87   1      }
  88          
  89          
  90          unsigned int filter(unsigned int old_value)
  91          {       unsigned int value=0;
  92   1              bit zo=0,zt=0;  
  93   1              unsigned int temp,temp1,temp2;
  94   1          unsigned char count,i,j;
  95   1         for (j=0;j<4;j++)
  96   1         {
  97   2            for (i=0;i<5-j;i++)
  98   2            {
  99   3               if ( value_buf[i]>value_buf[i+1] )
 100   3               {
 101   4                  temp = value_buf[i];
 102   4                  value_buf[i] = value_buf[i+1]; 
 103   4                   value_buf[i+1] = temp;
 104   4               }
 105   3            }
 106   2         }
 107   1         for(count=1;count<4;count++)
 108   1           { value+= value_buf[count];}
 109   1                      value/=3;
 110   1      temp1=value;
 111   1      temp1-=old_value;
 112   1      temp2=old_value;
 113   1      temp2-=value;
 114   1      if (temp1>2000){zo=0;}else{if(temp1>1){zo=1;}else{zo=0;}}
 115   1      if (temp2>2000){zt=0;}else{if(temp2>1){zt=1;}else{zt=0;}}
 116   1      
 117   1      if(zo|zt)
C51 COMPILER V6.23a  AD                                                                    01/03/2004 17:10:15 PAGE 3   

 118   1           {return (value);}
 119   1      else {return old_value;}        
 120   1      }  
 121          
 122          void main()
 123          {   unsigned int ptem,adtem,Hpv,Lpv,Had,Lad,Hout,Lout;
 124   1          unsigned int datt,date;
 125   1              unsigned long test,tests;
 126   1                      CLOCK=0; 
 127   1                      LATCH=1;
 128   1                      TH0=0x00;
 129   1                      TL0=0x00;
 130   1                      P1=0x00;
 131   1                      TR0=0;
 132   1                      TMOD=0x09;
 133   1                      IT0=1;
 134   1                      TR0=1;
 135   1                      EX0=1;
 136   1                      EA=1;
 137   1      for(;;)
 138   1              {
 139   2                      datt=filter(old_val);
 140   2                      old_val=datt;
 141   2      if(old_val<25){datt=0;}     
 142   2      else{Lad=0;Had=3000;Lout=100;Hout=120;Lpv=250;Hpv=2000;
 143   3                      ptem=Hpv-Lpv;
 144   3                      adtem=Had-Lad;
 145   3                      test=old_val-Lpv;
 146   3                      test*=adtem;
 147   3                      tests=Lad;
 148   3                      tests*=ptem;
 149   3                      test=test+tests;
 150   3              test/=ptem;
 151   3                      date=test;
 152   3                      datt=date;}
 153   2      computer(old_val);
 154   2              }
 155   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    722    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33      35
   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 + -