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

📄 ad.lst

📁 用模拟比较器实现AD模拟转换
💻 LST
字号:
C51 COMPILER V7.00  AD                                                                     04/29/2006 21:37:58 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\安装程序\keil\C51\BIN\C51.EXE ad.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //------------------------函数声明,变量定义---------------------------------
   2          #include<reg51.h>
   3          #include<intrins.h>
   4          sbit sle_A=P3^0;
   5          sbit sle_B=P3^1;
   6          sbit sle_C=P3^2;
   7          sbit comp_OUT=P3^6;
   8          sbit comp_IN1=P1^0;
   9          sbit comp_IN2=P1^1;
  10          unsigned char ABC;
  11          unsigned int Tref;
  12          unsigned int Tx;
  13          unsigned int Vx;
  14          unsigned int Vref=25000;//实际参考电压值的1000倍,以免出现小数
  15          
  16          
  17          void delay(unsigned int N);//延时子程序,实现(16xN+24)US的延时
  18          void timer_set();//定时器初始化函数
  19          void discharge();//电容放电
  20          void measure_Vref();//测量参考电压值
  21          void measure_Vx(unsigned char channels);//测量指定通道的电压
  22          void calculate_Vx();//计算待测电压值
  23          #define delayNOP();{_nop_();_nop_();_nop_();_nop_();};
  24          
  25          
  26          //------------------------------------------------------------------
  27          //函数名称:DELAY
  28          //入口参数:N
  29          //函数功能:延时子程序,实现(16xN+24)us的延时
  30          //系统采用11。0592的时钟时,延时满足要求,其他情况需要改动
  31          //--------------------------------------------------------------------
  32          
  33          void delay(unsigned int N)
  34          {
  35   1       int i;
  36   1       for(i=0;i<N;i++);
  37   1      }
  38          
  39          
  40          //-----------------------------------------------------------------------
  41          //函数名称:TIMER-SET()
  42          //功能说明:设置定时器工作状态,与硬件有关、
  43          //-----------------------------------------------------------------------
  44          
  45          
  46          void timer_set()
  47          {
  48   1       TMOD=0X01;//设定定时器工作模式
  49   1      }
  50          
  51          
  52          //-----------------------------------------------------------------------
  53          //函数名称:DISCHARGE()
  54          //函数功能:电容放电,定时器清零
  55          //-----------------------------------------------------------------------
C51 COMPILER V7.00  AD                                                                     04/29/2006 21:37:58 PAGE 2   

  56          
  57          void discharge()
  58          {
  59   1       comp_IN2=0;//P1,1置零,cr放电
  60   1       delay(0);//延时24us
  61   1       TH0=0;
  62   1       TL0=0;
  63   1      }
  64          
  65          //--------------------------------------------------------------------------
  66          //函数名称:MEASURE-Vref
  67          //函数功能:测量参考电压
  68          //--------------------------------------------------------------------------
  69          
  70          
  71          void measure_Vref()
  72          {
  73   1       sle_A=0;
  74   1       sle_B=0;
  75   1       sle_C=0;//选通道0,Vref输入
  76   1       delayNOP();//定时消除抖动
  77   1       TR0=1;//启动计数器
  78   1       comp_IN2=1;//p1.1置1,开始积分。
  79   1       while(comp_OUT);//检测p3,6是否出现跳变
  80   1       TR0=0;//停止计数器记数
  81   1       Tref=TH0;
  82   1       Tref=(Tref<<8)||TL0;
  83   1       discharge();//放电
  84   1      }
  85          
  86          
  87          //-------------------------------------------------------------------------------------
  88          //函数名称:MEASURE-Vx
  89          //入口参数:CHANNELS选通通道(1-7)
  90          //功能说明:测量指定通道的电压
  91          //-------------------------------------------------------------------------------------
  92          
  93          
  94          void measure_Vx(unsigned char channels)
  95          {
  96   1       sle_A=channels&0x01;
  97   1       sle_B=channels&0x02;
  98   1       sle_C=channels&0x04;
  99   1       delayNOP();//定时消除抖动
 100   1       TR0=1;//启动计数器
 101   1       comp_IN2=1;//置p1,1为1,开始积分
 102   1       while(comp_OUT);
 103   1       TR0=0;
 104   1       Tx=TH0;
 105   1       Tx=(Tx<<8)||TL0;
 106   1       discharge();//放电
 107   1      }
 108          
 109          
 110          //---------------------------------------------------------------------------------------------
 111          //函数名称:CALCULATE-VX
 112          //函数公式VX=Vref *Tx/Tref计算结果
 113          //功能说明:计算Vx
 114          //---------------------------------------------------------------------------------------------
 115          
 116          
 117          void calculte_Vx()
C51 COMPILER V7.00  AD                                                                     04/29/2006 21:37:58 PAGE 3   

 118          {
 119   1       
 120   1      }
 121          
 122          
 123          //--------------------------------------------------------------------------------------------
 124          //函数名称:MAIN
 125          //函数功能:主函数
 126          //--------------------------------------------------------------------------------------------
 127          
 128          
 129          void main()
 130          {
 131   1      timer_set();
 132   1      discharge();
 133   1      measure_Vref();
 134   1      measure_Vx(1);
 135   1      calculte_Vx();//计算待测电压
 136   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    163    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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