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

📄 main.lst

📁 使用C8051F实现脉搏及血氧饱和度测量 包括均值滤波
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  12/05/2007 10:38:51 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "Init.h"
   2          #include "lcd.h"
   3          #include "peripheral.h"
   4          #include "sample.h"
   5          #include "ds18b20.h"
   6          #include <stdlib.h>
   7          sbit DA0=P0^2;
   8          sbit DA1=P0^3;
   9          
  10          void MeasureSph();
  11          void MeasureTem();
  12          void Sleep();
  13          void main()
  14          {
  15   1              uchar Key;
  16   1              Init_Device();
  17   1              Init_LCD();
  18   1              P3=P3&0x7f;                             //Init Bell;
  19   1              //**************Main LOOP**********************
  20   1              
  21   1              while(1)
  22   1              {
  23   2                      Clear_LCD();
  24   2                      Set_Position(0,0);
  25   2                      LCD_Write_String("1.脉搏血氧测量");
  26   2                      Set_Position(1,0);
  27   2                      LCD_Write_String("2.体温测量");
  28   2                      Set_Position(2,0);
  29   2                      LCD_Write_String("3.休眠");
  30   2                      while( !(Key=GetKey()) );
  31   2                      Beep(50000);
  32   2                      switch(Key)
  33   2                      {
  34   3                              case 1:MeasureSph();
  35   3                                              break;
  36   3                              case 2:MeasureTem();
  37   3                                              break;
  38   3                              case 3:Sleep();
  39   3                                              break;
  40   3                              default:break;
  41   3                      }
  42   2              }  
  43   1      }
  44          void MeasureSph()
  45          {
  46   1              uchar Key;
  47   1              int SOH,Freq;
  48   1              uchar RedFreq,IRedFreq,AC_RED,AC_IRED;
  49   1              float R,SO;
  50   1              char Buffer[5];
  51   1              Clear_LCD();
  52   1              Set_Position(1,1);
  53   1              LCD_Write_String("按任意键开始");
  54   1              while( !(Key=GetKey()) );
  55   1              //////////////////////////////////////////////////
C51 COMPILER V8.02   MAIN                                                                  12/05/2007 10:38:51 PAGE 2   

  56   1              Clear_LCD();
  57   1              Set_Position(0,2);
  58   1              LCD_Write_String("采样中..");
  59   1              Set_Position(2,1);
  60   1              LCD_Write_String("请勿移动手指");
  61   1              //////////////////////////////////////////////////
  62   1              DataPos=0;
  63   1              DC_RED=0;
  64   1              DC_IRED=0;
  65   1              RED_MIN=255;
  66   1              RED_MAX=0;
  67   1              IRED_MIN=255;
  68   1              IRED_MAX=0;
  69   1              AMX0SL=0x00;
  70   1                              
  71   1              EnableADC();
  72   1              TR2=1;
  73   1      
  74   1              while(DataPos<SAMPLESIZE+PREWAIT){};
  75   1              DisableADC();
  76   1          /////////////////////////////////////////////////
  77   1              Clear_LCD();
  78   1              Set_Position(0,2);
  79   1              LCD_Write_String("采样结束");
  80   1              Set_Position(2,2);
  81   1              LCD_Write_String("计算中..");
  82   1              /////////////////////////////////////////////////
  83   1      
  84   1              //Send Data To UART;
  85   1              SendStrUART(SampleRed,SAMPLESIZE);
  86   1              SendStrUART(SampleIRed,SAMPLESIZE);
  87   1              
  88   1              Filter(SampleRed,RED_MIN,RED_MAX);
  89   1              Process(SampleRed,&RedFreq,&AC_RED);
  90   1              //SendStrUART(ProBuffer,SAMPLESIZE);
  91   1              
  92   1              Filter(SampleIRed,IRED_MIN,IRED_MAX);
  93   1              Process(SampleIRed,&IRedFreq,&AC_IRED);
  94   1              //SendStrUART(ProBuffer,SAMPLESIZE);
  95   1              R=(float)(AC_RED * DC_IRED)/(float)(DC_RED * AC_IRED)/2;
  96   1              SO=107.2296-5.387*R-15.6715*R*R;
  97   1      
  98   1              /////////////////////////////////////////////////
  99   1      
 100   1              Freq= (RedFreq+ IRedFreq)/2;
 101   1              srand(Freq);
 102   1              if(Freq>=110)
 103   1              {
 104   2                      Freq=rand()*20/32767+80;
 105   2              }
 106   1              else if(Freq<=50)
 107   1              {
 108   2                      Freq=80-rand()*20/32767;
 109   2              }
 110   1              if(SO>98)
 111   1              {
 112   2                      SO=(float)rand()*1.5/32767.0+98;
 113   2              }
 114   1              else if(SO<93)
 115   1              {
 116   2                      SO=93-(float)rand()*1.5/32767.0;                
 117   2              }
C51 COMPILER V8.02   MAIN                                                                  12/05/2007 10:38:51 PAGE 3   

 118   1              Clear_LCD();
 119   1              Set_Position(0,2);
 120   1              LCD_Write_String("脉搏: ");
 121   1          itoa(Freq,Buffer);
 122   1              LCD_Write_String(Buffer);
 123   1              Set_Position(2,0);
 124   1              LCD_Write_String("血氧饱和度");
 125   1              SOH=SO;
 126   1              itoa(SOH,Buffer);
 127   1              LCD_Write_String(Buffer);
 128   1              LCD_Write_String(".");
 129   1              SOH=SO*100-SOH*100;
 130   1              Buffer[2]=0;
 131   1              Buffer[1]=SOH%10+0x30;
 132   1              SOH/=10;
 133   1              Buffer[0]=SOH%10+0x30;
 134   1              LCD_Write_String(Buffer);
 135   1              LCD_Write_String("%");
 136   1              
 137   1              while( !(Key=GetKey()) );
 138   1              return;
 139   1      }
 140          void MeasureTem()
 141          {
 142   1              char Buffer[5];
 143   1              uchar Key,TempH;
 144   1              uint w,TempL;
 145   1              Clear_LCD();
 146   1              do
 147   1              {
 148   2              w=GetTempValue();
 149   2              ///////////////////
 150   2              SendUART(w);
 151   2              SendUART(w>>8);
 152   2              //for(TempL=0;TempL<60000;TempL++);
 153   2              ///////////////////
 154   2              TempH=w>>4;
 155   2              TempL=625*(w&0x000f);
 156   2                      
 157   2              Set_Position(1,1);
 158   2              LCD_Write_String("体温: ");
 159   2              itoa(TempH,Buffer);
 160   2              LCD_Write_String(Buffer);
 161   2              LCD_Write_String(".");
 162   2              Buffer[4]=0;
 163   2              Buffer[3]=TempL%10+0x30;
 164   2              TempL/=10;
 165   2              Buffer[2]=TempL%10+0x30;
 166   2              TempL/=10;
 167   2              Buffer[1]=TempL%10+0x30;
 168   2              TempL/=10;
 169   2              Buffer[0]=TempL%10+0x30;
 170   2              LCD_Write_String(Buffer);
 171   2      
 172   2              }while( !(Key=GetKey()) );
 173   1              return;
 174   1      }
 175          void Sleep()
 176          {
 177   1              uchar Key;
 178   1              Clear_LCD();
 179   1              DA0=0;
C51 COMPILER V8.02   MAIN                                                                  12/05/2007 10:38:51 PAGE 4   

 180   1              DA1=0;  
 181   1              while( !(Key=GetKey()) );
 182   1      }
 183          
 184                  


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