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

📄 模拟比较器.lst

📁 接口技术的配套源代码 里面有很多接口技术方面的实例
💻 LST
字号:
C51 COMPILER V7.06   腳拟_冉_器                                                            06/08/2005 23:00:18 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 腳拟_冉_器
OBJECT MODULE PLACED IN 模拟比较器.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE 模拟比较器.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //-----------------------函数声明,变量定义--------------------------------------------------------
   2          #include <reg51.h>
   3          #include <intrins.h>
   4          sbit     sel_A = P3^0;
   5          sbit     sel_B = P3^1;
   6          sbit     sel_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          void delay(unsigned  int N);             //延时子程序,实现(16*N+24)us的延时
  17          void timer_set();                        //定时器初始化函数
  18          void discharge();                        //电容放电
  19          void measure_Vref();                     //测量参考电压值
  20          void measure_Vx(unsigned char channels);//测量指定通道的电压
  21          void calculate_Vx();                   //计算待测电压值           
  22          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};                  
  23          //--------------------------------------------------------------------------------------------------
  24          // 函数名称: delay
  25          // 入口参数: N
  26          // 函数功能:延时子程序,实现(16*N+24)us的延时 
  27          // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
  28          //--------------------------------------------------------------------------------------------------
  29            void delay(unsigned  int N)  
  30            {
  31   1        int i; 
  32   1        for(i=0;i<N;i++);
  33   1        }
  34          //-------------------------------------------------------------------------------------------------------
  35          //  函数名称: timer_set 
  36          //  功能说明: 设置定时器工作状态,与硬件有关
  37          //--------------------------------------------------------------------------------------------------------
  38          void timer_set()
  39               {
  40   1                TMOD=0x01;  //设定定时器工作模式
  41   1            }
  42          //--------------------------------------------------------------------------------------------------
  43          // 函数名称: discharge
  44          // 函数功能: 电容放电,定时器清零
  45          //--------------------------------------------------------------------------------------------------
  46            void discharge()  
  47            {
  48   1        comp_IN2=0;         //P1.1置零,Cr放电
  49   1        delay(0);           //延时24us
  50   1        TH0=0;              //计数器清零
  51   1        TL0=0;
  52   1        }
  53          //-------------------------------------------------------------------------------------------------------
  54          //  函数名称: measure_Vref
  55          //  功能说明: 测量参考电压
C51 COMPILER V7.06   腳拟_冉_器                                                            06/08/2005 23:00:18 PAGE 2   

  56          //--------------------------------------------------------------------------------------------------------
  57          void measure_Vref() 
  58          { 
  59   1        sel_A=0;
  60   1        sel_B=0;
  61   1        sel_C=0;                  //选通0通道,Vref输入
  62   1        delayNOP();               //定时消除抖动
  63   1        TR0=1;                    //启动计数器
  64   1        comp_IN2=1;               //P1.1置1,开始积分
  65   1        while(comp_OUT);          //检测P3.6是否出现跳变
  66   1        TR0=0;                    //停止计数器计数
  67   1        Tref=TH0;
  68   1        Tref=(Tref<<8)||TL0;
  69   1        discharge();              //放电
  70   1        }
  71          //-------------------------------------------------------------------------------------------------------
  72          //  函数名称: measure_Vx
  73          //  入口参数: channels选通通道(1-7)
  74          //  功能说明: 测量指定通道的电压
  75          //--------------------------------------------------------------------------------------------------------
  76          void measure_Vx(unsigned char channels)
  77          { 
  78   1        sel_A=channels&0x01;
  79   1        sel_B=channels&0x02;
  80   1        sel_C=channels&0x04;      
  81   1        delayNOP();               //定时消除抖动
  82   1        TR0=1;                    //启动计数器
  83   1        comp_IN2=1;               //P1.1置1,开始积分
  84   1        while(comp_OUT);          //检测P3.6是否出现跳变
  85   1        TR0=0;                    //停止计数器计数
  86   1        Tx=TH0;
  87   1        Tx=(Tx<<8)||TL0;
  88   1        discharge();              //放电
  89   1        }
  90          //-------------------------------------------------------------------------------------------------------
  91          //  函数名称: calculate_Vx
  92          //  根据公式Vx=Vref*Tx/Tref计算结果;
  93          //  功能说明: 计算Vx
  94          //--------------------------------------------------------------------------------------------------------
  95          void calculate_Vx()
  96             {
  97   1            //根据公式Vx=Vref*Tx/Tref计算结果;
  98   1         }
  99          //-------------------------------------------------------------------------------------------------------
 100          //  函数名称: main
 101          //  功能说明: 主函数
 102          //--------------------------------------------------------------------------------------------------------
 103          void main()
 104               {
 105   1               timer_set();
 106   1               discharge();              //放电
 107   1               measure_Vref();
 108   1           measure_Vx(1);
 109   1           calculate_Vx();                   //计算待测电压值           
 110   1               }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    163    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.06   腳拟_冉_器                                                            06/08/2005 23:00:18 PAGE 3   

   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 + -