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

📄 measure.lst

📁 实现了应急灯的控制
💻 LST
字号:
C51 COMPILER V7.06   MEASURE                                                               01/17/2008 16:19:15 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MEASURE
OBJECT MODULE PLACED IN measure.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE measure.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //-----------------------------------------------------------------------------
   2          //
   3          //文件名:      measure.c
   4          //
   5          //编写人:ywq   
   6          //
   7          //编写时间:2008/01/14
   8          //
   9          //目标器件: C8051F310
  10          //
  11          //编译工具: keil c
  12          //
  13          //程序说明:     用于测量当前的状态。
  14          //
  15          //包括电池的电压、温度测量、外部电网的电压检测
  16          //
  17          //
  18          //-----------------------------------------------------------------------------
  19          // Includes
  20          //
  21          //------------------------------------------------------------------------------------
  22          #include "measure.h"
  23          #include "delay.h"
  24          
  25           unsigned int time;
  26           unsigned int sourceresulth;
  27           unsigned int sourceresultl;
  28          
  29          
  30          void battery()
  31          {
  32   1      // unsigned int grade;
  33   1       AMX0P=0x04;       /*设置AD正输入端口*/
  34   1       AMX0N=0x1f;       /*设置AD负输入端口*/
  35   1       ADC0CN |=0xc0;     /*ADC0使能,向AD0BUSY写1开始转换*/
  36   1       //REF0CN |=0x04;               /*内部电压基准提供从VREF脚输出,ADC0电压基准取自VREF0*/
  37   1       ADC0CF |=0x50;         /*转换周期和增益为1*/
  38   1       //AMX0CF |=0x00;               /*单端输入*/
  39   1       //EIE2   |=0x02;       
  40   1       AD0BUSY=1;           //启动AD转换
  41   1       //delay(1000);
  42   1       while(!AD0INT)
  43   1       {
  44   2       delay(100);         
  45   2       }
  46   1       AD0INT=0;
  47   1       adresultl=ADC0L;       //读出转换结果
  48   1       adresulth=ADC0H&03;
  49   1       if(adresulth<0x01)
  50   1       {
  51   2       // grade=1;
  52   2        vbattery=1;            //电池电量处于过放状态
  53   2        }  
  54   1        else if((adresulth>0x01)&&(adresulth<0x02))
  55   1        {
C51 COMPILER V7.06   MEASURE                                                               01/17/2008 16:19:15 PAGE 2   

  56   2        // grade=2;
  57   2         vbattery=2;            //电池低电量
  58   2         }
  59   1        else if((adresulth>0x02)&&(adresulth<0x03))
  60   1        {
  61   2        // grade=3;
  62   2         vbattery=3;            //电池高电量
  63   2        }
  64   1        else 
  65   1        {
  66   2        // grade=4;
  67   2         vbattery=4;            //电池过充
  68   2        } 
  69   1      }
  70          void charge()
  71          {
  72   1        switch (vbattery)
  73   1        {
  74   2        case 1:                 //快速充电
  75   2        //PCA_Init();
  76   2        PCA0CPL0=0x80;
  77   2        PCA0CPH0=0x80;
  78   2        PCA0CPM0=0xcb;
  79   2        break;
  80   2      
  81   2        case 2:                //一般充电
  82   2        //PCA_Init();
  83   2        PCA0CPL0=0x00;
  84   2        PCA0CPH0=0x80;
  85   2        PCA0CPM0=0xcb;
  86   2        break;
  87   2      
  88   2        case 3:              //一般充电
  89   2        //PCA_Init();
  90   2        PCA0CPL0=0x80;
  91   2        PCA0CPH0=0x00;
  92   2        PCA0CPM0=0xcb;
  93   2        break;
  94   2       
  95   2         case 4:                 //不充电
  96   2        //PCA_Init();
  97   2        //PCA0CPL1=0x00;
  98   2        //PCA0CPH1=0x80;
  99   2        //PCA0CPM1=0xcb;
 100   2         //redlighton();                   //显示过充状态
 101   2         P2_0=0;                         //关断充电口
 102   2         PCA0CPM0=0x00;
 103   2         break;
 104   2      
 105   2         default:
 106   2         break;
 107   2        }
 108   1      }
 109          
 110          void sourcemeasure()
 111          {
 112   1        unsigned int highvoltage;
 113   1        unsigned int lowvoltage;
 114   1       //unsigned int grade;
 115   1       AMX0P=0xe7;       /*设置AD正输入端口*/
 116   1       AMX0N=0x1f;       /*设置AD负输入端口*/
 117   1       ADC0CN |=0xc0;     /*ADC0使能,向AD0BUSY写1开始转换*/
C51 COMPILER V7.06   MEASURE                                                               01/17/2008 16:19:15 PAGE 3   

 118   1       //REF0CN |=0x04;               /*内部电压基准提供从VREF脚输出,ADC0电压基准取自VREF0*/
 119   1       ADC0CF |=0x50;         /*转换周期和增益为1*/
 120   1       //ADC0GTH =0x00;
 121   1       //ADC0GTL =0xff;
 122   1       //ADC0LTH =0x00;
 123   1       //ADC0LTL =0x80;
 124   1       //AMX0CF |=0x00;               /*单端输入*/
 125   1       //EIE1   |=0x04;       
 126   1       AD0BUSY=1;
 127   1       while(!AD0INT)
 128   1       {
 129   2       delay(100);         
 130   2       }
 131   1       AD0INT=0;
 132   1       sourceresulth=ADC0L;
 133   1       sourceresultl=ADC0H&03;
 134   1        highvoltage=0x10;
 135   1        lowvoltage=0x00;
 136   1        if(highvoltage<sourceresulth)
 137   1        {
 138   2              vsource=1;
 139   2         }
 140   1         else if(highvoltage>sourceresulth)
 141   1          {
 142   2                vsource=0;
 143   2               }
 144   1               else
 145   1               {
 146   2               if(lowvoltage<sourceresultl)
 147   2                 {
 148   3                  vsource=1;
 149   3                      }
 150   2                      else
 151   2             {
 152   3                   vsource=0;
 153   3                 }
 154   2           }  
 155   1      }
 156          
 157          
 158          
 159          void testtemperature(void)          //温度检测
 160          { 
 161   1        TH0=0x00;
 162   1        TL0=0x00;
 163   1        CPT1MX=0xEC;
 164   1        CPT1MD=0x20;
 165   1        CPT1CN |=0x80;
 166   1        P1_1=1;
 167   1        TR0=1;
 168   1        
 169   1      }
 170          
 171           void temp() interrupt 13         //比较中断
 172          {
 173   1         TR0=0;
 174   1         CPT1CN |=0x80;
 175   1         time=TH1*100+TH0;  
 176   1       
 177   1      }
 178          
 179          void calculator()                 //温度计算
C51 COMPILER V7.06   MEASURE                                                               01/17/2008 16:19:15 PAGE 4   

 180          { 
 181   1        unsigned int R;
 182   1        time=time/12;
 183   1        R=time*1000000/470;
 184   1       ///////////////////////////////////////
 185   1       //添加阻值与温度的关系代码
 186   1       //
 187   1       //
 188   1       //
 189   1      ////////////////////////////////////////
 190   1      
 191   1      
 192   1      }
 193          
 194          void pca() interrupt 11
 195          {
 196   1        CF=0;
 197   1        CCF0=0;
 198   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    391    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       2
   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 + -