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

📄 定时.lst

📁 51单片机实现简易家电定时控制装置
💻 LST
字号:
C51 COMPILER V7.50   定时                                                                  06/27/2006 21:20:58 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 定时
OBJECT MODULE PLACED IN 定时.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 定时.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #define uchar unsigned char
   3          uchar cout, k,i,n;
   4          uchar miao = 0;
   5          uchar fen = 0;
   6          uchar hour =0;
   7          uchar d_hour,d_fen,d_miao;
   8          sbit P3_0=P3^0;
   9          sbit P3_1=P3^1;
  10          sbit P3_2=P3^2;
  11          sbit P3_7=P3^7;
  12          bit baojing,flag_ma,t;
  13          uchar duanma[11] =
  14          {
  15            0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff
  16          };
  17          uchar weima[6] =
  18          {
  19            0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf
  20          };
  21          uchar huanchun[6];
  22          void Delay(uchar i)
  23          {
  24   1              do{     if(flag_ma==0)  //显示标志,为0显示设置定时时间,
  25   2                      {       huanchun[0] = miao % 10;
  26   3                      huanchun[1] = miao / 10;
  27   3                      huanchun[2] = fen % 10;
  28   3                      huanchun[3] = fen / 10;
  29   3                      huanchun[4] = hour % 10;
  30   3                      huanchun[5] = hour / 10;
  31   3                      }
  32   2                      else       //显示标志,为1显示设置定时时长,
  33   2                      {       huanchun[0] = d_miao % 10;
  34   3                      huanchun[1] = d_miao / 10;
  35   3                      huanchun[2] = d_fen% 10;
  36   3                      huanchun[3] = d_fen / 10;
  37   3                      huanchun[4] = d_hour % 10;
  38   3                      huanchun[5] = d_hour / 10;
  39   3                      }
  40   2                 }while(i--);
  41   1      }
  42          fuwei()   //复位操作
  43          {       miao=0;fen=0;hour=0;
  44   1              d_hour=0;d_fen=0;d_hour=0;
  45   1      }
  46          void dingshi()interrupt 1  //定时50ms //到计数
  47          {
  48   1        TH0 = 0x4c;
  49   1        TL0 = 0x00;
  50   1        cout++;
  51   1        if (cout == 20)
  52   1        {
  53   2          miao--;
  54   2          cout=0;
  55   2          if (miao==0xff)
C51 COMPILER V7.50   定时                                                                  06/27/2006 21:20:58 PAGE 2   

  56   2          {
  57   3            miao=59;
  58   3            fen--;
  59   3            if (fen==0xff)
  60   3            {
  61   4              fen=59;
  62   4              hour--;
  63   4              if (hour==0xff)
  64   4                hour=23;
  65   4            }
  66   3          }
  67   2              if(miao==0&&fen==0&&hour==0)
  68   2              {       baojing=1;//声音报警标志
  69   3                      P3_2=0;//声音报警
  70   3                      P3_7=0; //控制信号产生控制为低电平
  71   3                      if(fen==58||t==1)t=0,P3_2=1;//报警1分钟,或到定时时间后停止报警
  72   3              }
  73   2              if(miao==(60-d_miao)&&fen==(59-d_fen)&&hour==(23-d_hour))
  74   2              {       P3_7=1; //
  75   3                      t=1;
  76   3                      TR0=0;
  77   3                      fuwei(); //显示都为0
  78   3              }
  79   2              }
  80   1        }
  81          void xianshi()interrupt 3       //中断显示      2 MS
  82          {       
  83   1                TH1=0Xf8;                //显示定时两毫秒。
  84   1                TL1=0Xcc;
  85   1            P1 = weima[i];
  86   1            P2 = duanma[huanchun[i]];
  87   1            i++;
  88   1            if(i==6)i=0;
  89   1                if(fen==58||t==1)P3_2=1;       //到1分钟或定时到后停止报警
  90   1      }       
  91          unsigned char scankey()   //键盘扫描
  92          {
  93   1              unsigned char k,down,up;
  94   1              P0=0x00;
  95   1              P0=0xF0;
  96   1              k=P0;
  97   1              if(k==0xF0)return 0xFF;
  98   1              Delay(50);              ////////////
  99   1              down=3;
 100   1              while(k&0x80)down--,k<<=1;
 101   1              P0=0x00;
 102   1              P0=0x0F;
 103   1              k=P0;
 104   1              if(k==0x0F)return 0xFF;
 105   1              up=0;
 106   1              while(k&0x01)up+=4,k>>=1;
 107   1              return up+down;
 108   1      }//scankey
 109          songjian() //松键操作
 110          {       uchar k;
 111   1              while(1)
 112   1              {       k=scankey();
 113   2                      if(k==scankey()&&k==0xff)break;
 114   2              }
 115   1      }               
 116          main()
 117          {
C51 COMPILER V7.50   定时                                                                  06/27/2006 21:20:58 PAGE 3   

 118   1        TMOD = 0X01;    //初始化定时器T0      T1
 119   1        TH0 = 0XEE;
 120   1        TL0 = 0X00;
 121   1        TH1=0Xf8;     
 122   1        TL1=0Xcc;
 123   1        EA = 1;
 124   1        ET0 = 1;
 125   1        TR0 = 0;
 126   1        ET1 = 1;
 127   1        TR1 = 1;
 128   1        P3_7=1;//控制信号初始为高电平
 129   1        while(1)
 130   1        {             
 131   2                      k=scankey();
 132   2                      Delay(100);
 133   2                      if(k==scankey()&&k!=0xff)
 134   2                      {       
 135   3                              songjian();
 136   3                              if(k==15)
 137   3                              {       TR0=0;
 138   4                                      P3_0=0;
 139   4                                      flag_ma=0;
 140   4                                      while(1)
 141   4                                      {               
 142   5                                      k=scankey();
 143   5                                      Delay(100);
 144   5                                      if(k==scankey()&&k!=0xff)
 145   5                                      {       songjian();             
 146   6                                              if(k==14){P3_0=1;break;}
 147   6                                              if(k<6)
 148   6                                              {  switch(k)
 149   7                                                      {       case 0: miao++;
 150   8                                                                              if(miao==60)miao=0;
 151   8                                                                              break;
 152   8                                                              case 1: miao--;
 153   8                                                                              if(miao==0xff)miao=59;
 154   8                                                                              break;
 155   8                                                              case 2: fen++;
 156   8                                                                              if(fen==60)fen=0;
 157   8                                                                              break;
 158   8                                                              case 3: fen--;
 159   8                                                                              if(fen==0xff)fen=59;
 160   8                                                                              break;
 161   8                                                              case 4: hour++;
 162   8                                                                              if(hour==24)hour=0;
 163   8                                                                              break;
 164   8                                                              case 5: hour--;
 165   8                                                                              if(hour==0xff)hour=23;
 166   8                                                                              break;
 167   8                                                      }
 168   7                                              }
 169   6                                      }
 170   5                              }
 171   4                              }
 172   3                      
 173   3                      if(k==13)
 174   3                              {       TR0=0;
 175   4                                      P3_0=0;
 176   4                                      flag_ma=1;
 177   4                                      while(1)
 178   4                                      {               
 179   5                                              k=scankey();
C51 COMPILER V7.50   定时                                                                  06/27/2006 21:20:58 PAGE 4   

 180   5                                              Delay(100);
 181   5                                              if(k==scankey()&&k!=0xff)
 182   5                                              {       songjian();
 183   6                                                      if(k==12){P3_0=1;break;}
 184   6                                                      if(k<6)
 185   6                                                      {  
 186   7                                                              switch(k)
 187   7                                                              {       case 0: d_miao++;
 188   8                                                                                      if(d_miao==60)d_miao=0;
 189   8                                                                                      break;
 190   8                                                                      case 1: d_miao--;
 191   8                                                                                      if(d_miao==0xff)d_miao=59;
 192   8                                                                                      break;
 193   8                                                                      case 2: d_fen++;
 194   8                                                                                      if(d_fen==60)d_fen=0;
 195   8                                                                                      break;
 196   8                                                                      case 3: d_fen--;
 197   8                                                                                      if(d_fen==0xff)d_fen=59;
 198   8                                                                                      break;
 199   8                                                                      case 4: d_hour++;
 200   8                                                                                      if(d_hour==24)d_hour=0;
 201   8                                                                                      break;
 202   8                                                                      case 5: d_hour--;
 203   8                                                                                      if(d_hour==0xff)d_hour=23;
 204   8                                                                                      break;
 205   8                                                              }
 206   7                                                      }
 207   6                                              }
 208   5                                      }
 209   4                              } 
 210   3                              if(k==11){flag_ma=0;;P3_1=0;TR0=1;}
 211   3                              }
 212   2                      }
 213   1      }                       


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    735    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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