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

📄 main1.lst

📁 电源检测系统 能够检测电源的过欠压,报警
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 1   


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

line level    source

   1          //头文件定义
   2          #include <C8051F000.h> //寄存器定义
   3          #include <intrins.h>   //内部函数
   4          #include "stdio.h"
   5          #include "math.h"
   6          
   7          #include "System_Init.h"
   8          #include "I2c.h"
   9          
  10          #define uchar unsigned char
  11          #define uint unsigned int
  12          
  13          //内部调用
  14          void Delay(uint sum);
  15          void Delay_Ms(uint add);
  16          void Display(void);
  17          void Read_Data(void);
  18          void Save_Data(void);
  19          
  20          sbit led1 = P0^6;
  21          sbit led2 = P0^7;
  22          sbit led3 = P3^5;
  23          sbit led4 = P3^4;
  24          
  25          sbit ledd = P3^1;
  26          sbit ledt = P3^2;
  27          sbit ledv = P3^3;
  28          
  29          sbit yuyin = P0^4;
  30          sbit sss = P0^3;
  31          //--------------------------------------------
  32          //全局变量
  33          //--------------------------------------------
  34          bit Save_Flag;
  35          bit Volt_Flag;
  36          bit Date_Flag;
  37          bit Time_Flag;
  38          bit Alarm_Flag;
  39          bit Disp_Flag;
  40          bit Clea_Flag;
  41          bit Soun_Flag;
  42          bit Edit_Flag;
  43          
  44          //uint i, j, m;
  45          uint Voltage, Adc_Data;
  46          long Voltage_Count;
  47          uchar Second;
  48          uchar Minite;
  49          uchar Hour;
  50          uchar Month;
  51          uchar Date;
  52          uchar Last_Minite;
  53          uchar Last_Hour;
  54          uchar Last_Month;
  55          uchar Last_Date;
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 2   

  56          uint Mstcnt;
  57          uchar Dispbitcnt;
  58          uint tcnt;
  59          uint Last_Voltage, Save_Voltage;
  60          uchar Minite_Sure;
  61          
  62          uchar Count;
  63          uint m;
  64          
  65          xdata uchar Led_Data[10]={0x3F, 0x21, 0x9B, 0xB3, 0xA5, 0xB6, 0xBE, 0x23, 0xBF, 0xB7};
  66          xdata uchar Display_Buf[20];
  67          xdata uchar E2p_Buf[10];
  68          
  69          //主程序
  70          main()
  71          {
  72   1        uint i;
  73   1        //系统文件调用
  74   1        EA = 0;    //关中断
  75   1        System_Init();
  76   1        EA = 1;    //开中断 
  77   1      
  78   1        Save_Flag=1;
  79   1        Read_Data();
  80   1        for(i=0;i<20;i++)
  81   1        {
  82   2          Display_Buf[i]=8;
  83   2        }
  84   1        Delay_Ms(10);
  85   1        yuyin = 1;
  86   1        Read_Data();
  87   1        Clea_Flag = 0;
  88   1        Soun_Flag = 0;
  89   1        //主进程
  90   1        while(1)
  91   1        {
  92   2              if(Save_Flag==1)
  93   2              {
  94   3                Save_Data();
  95   3                Read_Data();
  96   3                Save_Voltage = Last_Voltage;
  97   3                Save_Flag=0;
  98   3              }
  99   2              else if(Edit_Flag==1)
 100   2              {
 101   3                if(Minite_Sure<=57)
 102   3                {
 103   4                  if(Minite>=(Minite_Sure+2))
 104   4                      {
 105   5                        Volt_Flag = 0;
 106   5                    Date_Flag = 0;
 107   5                    Time_Flag = 0;//
 108   5                    Edit_Flag = 0;
 109   5                      }
 110   4                }
 111   3                else
 112   3                {
 113   4                  if(Minite==0)
 114   4                      {
 115   5                        Volt_Flag = 0;
 116   5                    Date_Flag = 0;
 117   5                    Time_Flag = 0;//
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 3   

 118   5                    Edit_Flag = 0;
 119   5                      }
 120   4                }
 121   3              }
 122   2        }
 123   1      }
 124          
 125          //延时
 126          void Delay(uint sum)
 127          {
 128   1        uint i, j;
 129   1        for(i=0;i<sum;i++)
 130   1        {
 131   2          for(j=0;j<500;j++);
 132   2        }
 133   1      }
 134          
 135          void Delay_Ms(uint add)
 136          {
 137   1        uint i, j;
 138   1        for(i=0;i<add;i++)
 139   1        {
 140   2          for(j=0;j<50;j++);
 141   2        }
 142   1      }
 143          //TIME3中断
 144          void Timer3_Isr(void) interrupt 14
 145          {
 146   1        TMR3CN&=~0x80;  //清中断标志
 147   1        if(Save_Flag==0)
 148   1        {
 149   2        //按键1采集
 150   2        AMX0SL = 0x03;
 151   2        ADBUSY=1;
 152   2        while(!ADCINT);
 153   2        ADCINT=0;
 154   2        Adc_Data = ADC0H*256 + ADC0L;//Key_Sure
 155   2        if(Adc_Data<=0xFF)
 156   2        {
 157   3              Volt_Flag = 0;
 158   3              Date_Flag = 0;
 159   3              Time_Flag = 0;
 160   3              for(m=0;m<20;m++)
 161   3              {
 162   4                Display();
 163   4              }
 164   3              Minite = Last_Minite;
 165   3          Hour = Last_Hour;
 166   3          Month = Last_Month;
 167   3          Date = Last_Date;
 168   3              Save_Flag = 1;
 169   3              Clea_Flag = 0;
 170   3              Edit_Flag = 0;
 171   3        }       
 172   2        //按键2采集
 173   2        AMX0SL = 0x05;
 174   2        ADBUSY=1;
 175   2        while(!ADCINT);
 176   2        ADCINT=0;
 177   2        Adc_Data = ADC0H*256 + ADC0L;//Key_Date
 178   2        if(Adc_Data<=0xFF)
 179   2        {
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 4   

 180   3              Minite_Sure = Minite;
 181   3              Last_Month = Month;
 182   3              Last_Date = Date;
 183   3              Last_Minite = Minite;
 184   3          Last_Hour = Hour;
 185   3              Volt_Flag = 0;
 186   3              Date_Flag = 1;
 187   3              Time_Flag = 0;
 188   3              for(m=0;m<10;m++)
 189   3              {
 190   4                Display();
 191   4              }
 192   3              Clea_Flag = 1;  
 193   3              Edit_Flag = 1;
 194   3              Mstcnt = 400;
 195   3        }
 196   2        //按键3采集
 197   2        AMX0SL = 0x07;
 198   2        ADBUSY=1;
 199   2        while(!ADCINT);
 200   2        ADCINT=0;
 201   2        Adc_Data = ADC0H*256 + ADC0L;//Key_Time
 202   2        if(Adc_Data<=0xFF)
 203   2        {
 204   3              Minite_Sure = Minite;
 205   3              Last_Month = Month;
 206   3              Last_Date = Date;
 207   3              Last_Minite = Minite;
 208   3          Last_Hour = Hour;
 209   3              Volt_Flag = 0;
 210   3              Date_Flag = 0;
 211   3              Time_Flag = 1;
 212   3              for(m=0;m<10;m++)
 213   3              {
 214   4                Display();
 215   4              }
 216   3              Clea_Flag = 1;
 217   3              Edit_Flag = 1;
 218   3              Mstcnt = 800;
 219   3        }
 220   2        //按键4采集
 221   2        AMX0SL = 0x02;
 222   2        ADBUSY=1;
 223   2        while(!ADCINT);
 224   2        ADCINT=0;
 225   2        Adc_Data = ADC0H*256 + ADC0L;//Key_Voltage
 226   2        if(Adc_Data<=0xFF)
 227   2        {
 228   3          Minite_Sure = Minite;
 229   3              Last_Month = Month;
 230   3              Last_Date = Date;
 231   3              Last_Minite = Minite;
 232   3          Last_Hour = Hour;
 233   3              Volt_Flag = 1;
 234   3              Date_Flag = 0;
 235   3              Time_Flag = 0;
 236   3              for(m=0;m<20;m++)
 237   3              {
 238   4                Display();
 239   4              }
 240   3              Edit_Flag = 1;
 241   3              Clea_Flag = 1;
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 5   

 242   3              Mstcnt = 0;
 243   3        }
 244   2        //按键5采集
 245   2        AMX0SL = 0x04;
 246   2        ADBUSY=1;
 247   2        while(!ADCINT);
 248   2        ADCINT=0;
 249   2        Adc_Data = ADC0H*256 + ADC0L;//Key_Left
 250   2        if(Adc_Data<=0xFF)
 251   2        {
 252   3              Minite_Sure = Minite;
 253   3              for(m=0;m<50;m++)
 254   3              {
 255   4                Display();
 256   4              }
 257   3              if(Volt_Flag==1)
 258   3              {         
 259   4                if(Last_Voltage>1400)
 260   4                {
 261   5                  Last_Voltage = 0;
 262   5                }
 263   4                else
 264   4                {
 265   5                  Last_Voltage = Last_Voltage + 100;
 266   5                }
 267   4              }
 268   3              else if(Date_Flag==1)
 269   3              {
 270   4                if(Last_Month>=12)
 271   4                {
 272   5                  Last_Month = 1;
 273   5                }
 274   4                else
 275   4                {
 276   5                  Last_Month++;
 277   5                }
 278   4              }
 279   3              else if(Time_Flag==1)
 280   3              { 
 281   4                if(Last_Hour>=23)
 282   4                {
 283   5                  Last_Hour = 0;
 284   5                }
 285   4                else
 286   4                {
 287   5                  Last_Hour++;
 288   5                }
 289   4              }
 290   3              Edit_Flag = 1;
 291   3              Clea_Flag = 1;
 292   3        }
 293   2        //按键6采集
 294   2        AMX0SL = 0x06;
 295   2        ADBUSY=1;
 296   2        while(!ADCINT);
 297   2        ADCINT=0;
 298   2        Adc_Data = ADC0H*256 + ADC0L;//Key_Right
 299   2        if(Adc_Data<=0xFF)
 300   2        {
 301   3              Minite_Sure = Minite;
 302   3              for(m=0;m<50;m++)
 303   3              {
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 6   

 304   4                Display();
 305   4              }
 306   3              if(Volt_Flag==1)
 307   3              {
 308   4                if(Last_Voltage<=10)
 309   4                {
 310   5                  Last_Voltage = 1500;
 311   5                }
 312   4                else
 313   4                {
 314   5                  Last_Voltage = Last_Voltage-10;
 315   5                }
 316   4              }
 317   3              else if(Date_Flag==1)
 318   3              {
 319   4                if(Last_Date<=1)
 320   4                {
 321   5                  Last_Date = 31;
 322   5                }
 323   4                else
 324   4                {
 325   5                  Last_Date--;
 326   5                }
 327   4              }
 328   3              else if(Time_Flag==1)
 329   3              {
 330   4                if(Last_Minite<=0)
 331   4                {
 332   5                  Last_Minite = 59;
 333   5                }
 334   4                else
 335   4                {
 336   5                  Last_Minite--;
 337   5                }
 338   4              }
 339   3              Edit_Flag = 1;
 340   3              Clea_Flag = 1;
 341   3        }
 342   2        //电压采集
 343   2        AMX0SL = 0x00;
 344   2        ADBUSY=1;
 345   2        while(!ADCINT);
 346   2        ADCINT=0;
 347   2        Adc_Data = ADC0H*256 + ADC0L;
 348   2        if(Voltage<Save_Voltage)
 349   2        {
 350   3          Alarm_Flag = 1;
 351   3        }
 352   2        else
 353   2        {
 354   3          Alarm_Flag = 0;
 355   3        }
 356   2        if(Voltage<500)
 357   2        {
 358   3          Disp_Flag = 0;
 359   3              yuyin = 0;
 360   3              ledv = 1;
 361   3              ledd = 1;
 362   3              ledt = 1;
 363   3        }
 364   2        else
 365   2        {
C51 COMPILER V8.08   MAIN1                                                                 05/21/2008 20:12:33 PAGE 7   

 366   3          Disp_Flag = 1;
 367   3        }
 368   2        //电压的显示
 369   2        if(Volt_Flag==1)
 370   2        {             
 371   3          Display_Buf[0] = Last_Voltage/1000;
 372   3          Display_Buf[1] = (Last_Voltage%1000)/100;
 373   3          Display_Buf[2] = (Last_Voltage%100)/10;
 374   3          Display_Buf[3] = Last_Voltage%10;
 375   3        }
 376   2        else

⌨️ 快捷键说明

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