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

📄 search.lst

📁 带时钟功能温度和湿度测量的仪器
💻 LST
字号:
C51 COMPILER V7.20   SEARCH                                                                11/09/2002 21:11:18 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SEARCH
OBJECT MODULE PLACED IN Search.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SensorModule\Search.C BROWSE DEBUG OBJECTEXTEND PRINT(.\Search.lst) OBJECT(
                    -Search.obj)

line level    source

   1          /*############################################################
   2          文件名称: Search.c
   3          功能    : 查表确定特定频率代表的温度或者湿度.分别保留一位小数
   4          创建人  : Houseivan
   5          创建日期: 2005-03-17
   6          修改人  : Houseivan
   7          修改日期: 2005-03-17
   8          ############################################################*/
   9          
  10          #include"Includes.h"
  11          #include<stdlib.h>
  12          
  13          /*检测是否配置了传感器监控功能*/
  14          #if _DETECT_TASK > 0
  15          
  16          /*------------------------------------------------*/
  17          /*Variants define*/
  18          /*############################################################
  19          VarName:TempFoscGroup[]
  20          Popurse:存放温度频率计数据
  21          Used By:查找算法函数调用
  22          Other  :
  23                  温度频率表:-20.0 ~ 80.0 ℃
  24                  将震荡频率调节在10KHZ左右
  25                  增长型  Temperature:2B如:-16。5℃
  26          ############################################################*/
  27          extern  uint code TempFoscGroup[];
  28          /*############################################################
  29          VarName:HumiFoscGroup
  30          Popurse:存放湿度频率计数据
  31          Used By:查找算法函数调用
  32          Other  :
  33                  湿度频率表:RH:0 ~ 100 %
  34                  将震荡频率调节在10KHZ左右
  35                  衰减型  Humidity:2B    如:RH56.9%
  36          ############################################################*/
  37          
  38          extern  uint code HumiFoscGroup[];
  39          
  40          /*Function define*/
  41          /*############################################################
  42          FuncName:       uint LocateRefValue(uint RefValue,uint Values[],uchar Size);
  43          Discription:查找RefValue对应的地址
  44          Input:          要查找的数据、目的数组首地址、数组大小
  45          Return:         返回相应的地址整数和小数部分
  46          Notice:         整数部分和符号位处于uint的高字节
  47                          小数部分则位于uint的低字节
  48                          只要定位到一个最小区间即可xi->[x1,x2]
  49          ############################################################*/
  50          uint LocateRefValue(uint RefValue,uint Values[],uchar Size)
  51          {
  52   1              uchar Integer,Decimal;                          //整数部分由整点值确定、小数部分有偏移量确定
  53   1              uchar Head,Tail,Mid;                            //Head(小),Tail(大)作为指针
  54   1              uint Temp;
C51 COMPILER V7.20   SEARCH                                                                11/09/2002 21:11:18 PAGE 2   

  55   1              if(Values[0]<Values[Size-1])            //检测当前数据序列的单调性
  56   1              {
  57   2              /*表明这个序列是递增的序列:温度*/
  58   2                      Head=0;
  59   2                      Tail=Size-1;
  60   2                      if(RefValue<=Values[Head])
  61   2                              return _MIN_NUM;
  62   2                      if(RefValue>=Values[Tail])
  63   2                              return _MAX_NUM;
  64   2              }
  65   1              else
  66   1              {
  67   2              /*表明这是一个递减的数字序列:湿度*/
  68   2                      Head=Size-1;
  69   2                      Tail=0;
  70   2                      if(RefValue<=Values[Head])
  71   2                              return _MAX_NUM;
  72   2                      if(RefValue>=Values[Tail])
  73   2                              return _MIN_NUM;
  74   2              }
  75   1              
  76   1              while(1)                                
  77   1              {
  78   2                      Mid=(Head+Tail)/2;                              //Mid>=Head
  79   2                      if(RefValue>=Values[Mid])               //说明落在(Mid,Tail)中
  80   2                              Head=Mid;
  81   2                      else                                                    //说明落在(Head,Mid)中
  82   2                              Tail=Mid;
  83   2                      if(abs(Tail-Head)<=1)                   //当首尾间隔为1或0时说明已经到了一个最小区间
  84   2                              break;                                          //结束查找操作
  85   2              }
  86   1              if(Values[0]<Values[Size-1])            //检测当前数据序列的单调性
  87   1              {
  88   2              /*表明这个序列是递增的序列:温度*/
  89   2                      Integer=Head;                                   //取出区间下限作为整数部分
  90   2              }
  91   1              else    
  92   1              {
  93   2                       Integer=Tail;                                  //取出区间下限作为整数部分
  94   2              }                               
  95   1              Decimal=Values[Tail]-Values[Head];      //确定区间宽度SpWidth
  96   1              Temp=(RefValue-Values[Head])
  97   1                              *_DECIMAL_BIT;                          //确定当前值对下限的偏移量Offset,10表示精确到小数点后一位
  98   1              Decimal=Temp/Decimal;                           //确定小数点后第一位    
  99   1              Temp=Integer*10+Decimal;                        //将温度湿度全部用0.1的倍数来表示       
 100   1      
 101   1              return Temp;
 102   1      }
 103          
 104          /*---------------------------------------------------------*/
 105          #endif
 106          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    401    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V7.20   SEARCH                                                                11/09/2002 21:11:18 PAGE 3   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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