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

📄 montor.lst

📁 监控行业车辆检测器源代码
💻 LST
字号:
C51 COMPILER V8.05a   MONTOR                                                               12/24/2008 15:11:13 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MONTOR
OBJECT MODULE PLACED IN montor.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE montor.c ROM(COMPACT) DEBUG OBJECTEXTEND

line level    source

   1          #include "STC12C5410AD.h"
   2          #include "app.h"
   3          #include <string.h>
   4          #include <stdio.h>
   5          #include <INTRINS.H>
   6          #include <MATH.H>
   7          
   8          void delay_n_ms( unsigned int n_milisecond);
   9          
  10          unsigned int xdata Fos[125];
  11          
  12          
  13           unsigned int  Count =0;
  14           unsigned int  MainCount =0;
  15           unsigned int  SaveFos = 0;
  16          unsigned int BigCount =0;
  17          unsigned int SmallCount =0;
  18          unsigned int ArbCount =0;       //计算次数*时间
  19          bit  FLAG = 0;
  20          
  21          //延时n_milisecond MS
  22          //供内部调用函数
  23          //可以在延时里面加入按键LED等处理
  24          void delay_n_ms( unsigned int n_milisecond)  /* n mS delay */
  25          {
  26   1           unsigned int i;
  27   1           while(n_milisecond--)
  28   1           {
  29   2                i=500;
  30   2                while(i--);
  31   2                        WDT_CONTR = 0x3c;      //使能看门狗
  32   2           }
  33   1      
  34   1      }
  35          
  36          unsigned char getkey()
  37          {
  38   1         unsigned char temp;
  39   1         temp=0;
  40   1              if(!KEY2)  temp |=1;
  41   1                temp <<=1;
  42   1              if(!KEY1)  temp |=1;
  43   1                temp <<=1;
  44   1              if(!KEY0)  temp |=1;
  45   1                temp <<=1;
  46   1              if(!KEY3)  temp |=1;
  47   1      
  48   1              return temp;
  49   1      }
  50          
  51          // 10MS 定时
  52          void Timer0(void) interrupt 1
  53          {
  54   1          unsigned char i;
  55   1              unsigned long int Sum;
C51 COMPILER V8.05a   MONTOR                                                               12/24/2008 15:11:13 PAGE 2   

  56   1              unsigned int Fos1,Fos2;
  57   1      
  58   1              TR0 = 0;
  59   1      // RED_LED = ~  RED_LED;
  60   1              MainCount =  Count;
  61   1              Count = 0;
  62   1      
  63   1        if(MainCount !=0)
  64   1          {
  65   2                EX0 = 0;         //关闭外部中断
  66   2                TR0 = 0;         //关闭本身中断
  67   2      
  68   2            ArbCount++;
  69   2      
  70   2                if(( MainCount>450)&&(ArbCount>40) ) // 说明是连接上了线圈
  71   2                {
  72   3                     ArbCount =0;
  73   3                         if(MainCount>SaveFos)
  74   3                         {
  75   4                                      SmallCount = 0;
  76   4                                      Fos[BigCount++] = MainCount;
  77   4                                  if( BigCount>124)
  78   4                                      {
  79   5                                         BigCount =0;
  80   5                                         Sum =0;
  81   5                                         for(i=0;i<62;i++)
  82   5                                         {
  83   6                                                 Sum =Fos[i] +Sum; 
  84   6                                         }
  85   5                                         Fos1 = Sum/62;
  86   5      
  87   5                                         Sum =0;
  88   5                                         for(i=62;i<124;i++)
  89   5                                         {
  90   6                                                 Sum =Fos[i] +Sum; 
  91   6                                         }
  92   5                                         Fos2 = Sum/62;
  93   5      
  94   5                                         if(abs(Fos1-Fos2)<5)
  95   5                                         {
  96   6                                                SaveFos = (Fos1+Fos2)/2;
  97   6                                         }
  98   5                                      }                  
  99   4                         }
 100   3                        if(MainCount<SaveFos)
 101   3                        {
 102   4                                 BigCount = 0;
 103   4                                 Fos[SmallCount++] =MainCount;
 104   4                                 if(SmallCount>124)
 105   4                                 {
 106   5                                        SmallCount =0;
 107   5                                        Sum =0;
 108   5                                         for(i=0;i<62;i++)
 109   5                                         {
 110   6                                                 Sum =Fos[i] +Sum; 
 111   6                                         }
 112   5                                         Fos1 = Sum/62;
 113   5      
 114   5                                         Sum =0;
 115   5                                         for(i=62;i<124;i++)
 116   5                                         {
 117   6                                                 Sum =Fos[i] +Sum; 
C51 COMPILER V8.05a   MONTOR                                                               12/24/2008 15:11:13 PAGE 3   

 118   6                                         }
 119   5                                         Fos2 = Sum/62;
 120   5      
 121   5                                         if(abs(Fos1-Fos2)<5)
 122   5                                         {
 123   6                                                SaveFos = (Fos1+Fos2)/2;
 124   6                                         }
 125   5      
 126   5                                 }              
 127   4                        } 
 128   3                                
 129   3                }
 130   2      
 131   2      
 132   2                FLAG = 1;
 133   2              
 134   2              }
 135   1        else
 136   1          {
 137   2                MainCount =0;
 138   2                EX0 = 1;
 139   2                RED_LED = 1;
 140   2                TR0 = 1;
 141   2              }
 142   1        WDT_CONTR = 0x3c;      //使能看门狗
 143   1              
 144   1      
 145   1      }
 146          
 147          void Ex0(void) interrupt 0
 148          {
 149   1            Count++ ;
 150   1                
 151   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    773    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    250    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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