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

📄 clock.lst

📁 用keil C编写绝对原创 内有proteus的仿真文件。可以实现时间的重设闹钟的设置
💻 LST
字号:
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 1   


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

stmt level    source

   1          #include <AT89X51.h>
   2          #include <intrins.h>
   3          unsigned char second,mininute,hour;
   4          unsigned char s_second,s_mininute,s_hour;
   5          unsigned char t_second,t_mininute,t_hour;
   6          unsigned char a_second,a_mininute,a_hour;
   7          unsigned char setw = 0;
   8          unsigned char count_num=0;
   9          unsigned char show_count=0;
  10          
  11          bit rset_flag=0;
  12          bit  aset_flag=0;
  13          bit  atime =0;
  14          
  15          unsigned char dis_dc[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x
             -00};
  16          unsigned char dis[8]={0,0,15,0,0,15,0,0};
  17          
  18          
  19          unsigned char get_key();
  20          unsigned char  key_is();
  21          
  22          void   key_deal(unsigned char k);
  23          
  24          void show();
  25          
  26          void main()
  27          {
  28   1         unsigned char t_key;
  29   1        second =0; mininute = 0; hour=0;
  30   1         P1  =0x00;
  31   1        TMOD = 0x01;
  32   1        TL0  = 0xb0;
  33   1        TH0  = 0x3c;
  34   1        TR0  =1;
  35   1        ET0  =1;
  36   1        EA   =1;
  37   1      
  38   1        while(1)
  39   1          {
  40   2      
  41   2             t_key = get_key();
  42   2             key_deal(t_key);
  43   2             if(aset_flag==1&&rset_flag==0)
  44   2               {
  45   3                if(a_second==second&&a_mininute==mininute&&a_hour==hour)
  46   3                atime =1; 
  47   3                }
  48   2          if(atime ==1)
  49   2           P3_0=1;
  50   2          else
  51   2           P3_0=0;
  52   2          
  53   2             show();
  54   2      }
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 2   

  55   1      }
  56          ///////////////////////////////////////////////////////////////////////////////////////////////////
  57          void delay1()
  58          {
  59   1        unsigned char i,j;
  60   1        for(i=0;i<0x02;i++)
  61   1        for(j=0;j<0xff;j++)
  62   1        ; 
  63   1      }
  64          void show()
  65          {   
  66   1      
  67   1      
  68   1      
  69   1      
  70   1          unsigned char shreg = 0x70;
  71   1          unsigned char shi;
  72   1      
  73   1        
  74   1      
  75   1          if(rset_flag==1)
  76   1             {
  77   2                dis[0]=t_second%10;
  78   2                dis[1]=t_second/10;
  79   2                dis[3]=t_mininute%10;
  80   2                dis[4]=t_mininute/10;
  81   2                dis[6]=t_hour%10;
  82   2                dis[7]=t_hour/10;
  83   2       
  84   2              }
  85   1         else
  86   1              {
  87   2                dis[0]=second%10;
  88   2                dis[1]=second/10;
  89   2                dis[3]=mininute%10;
  90   2                dis[4]=mininute/10;
  91   2                dis[6]=hour%10;
  92   2                dis[7]=hour/10;
  93   2                  }
  94   1                             if(rset_flag==1)
  95   1                   {
  96   2                      if(show_count<30)
  97   2                        {
  98   3                      switch(setw)
  99   3                            {
 100   4                              case 0:
 101   4                                    dis[0]=0x0a;
 102   4                                    dis[1]=0x0a;
 103   4                               break;
 104   4                              case 1:
 105   4                                    dis[3]=0x0a;
 106   4                                    dis[4]=0x0a;
 107   4                               break;
 108   4                              case 2:
 109   4                                    dis[6]=0x0a;
 110   4                                    dis[7]=0x0a;
 111   4                               break;
 112   4                            }  
 113   3      
 114   3      
 115   3                 }
 116   2                 if(show_count>=60)
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 3   

 117   2                 show_count =0;
 118   2                 else 
 119   2                 show_count++;
 120   2              }
 121   1      
 122   1           if(atime==1)
 123   1                {
 124   2                  unsigned char i;
 125   2                 if(show_count<30)
 126   2                      for(i=0;i<8;i++)
 127   2                      dis[i]=0x0a;
 128   2                      if(show_count>60)
 129   2                       show_count=0;
 130   2                       else
 131   2                       show_count++;
 132   2                }
 133   1      
 134   1      
 135   1      
 136   1           for (shi=0;shi<8;shi++)
 137   1           {
 138   2            P2 = shreg + dis[shi];
 139   2            delay1();
 140   2              shreg-=0x10;
 141   2           }
 142   1       
 143   1       
 144   1      
 145   1      
 146   1        return;
 147   1            
 148   1      
 149   1      
 150   1      
 151   1      }
 152          ///////////////////////////////////////////////////////////////////////////////////////////////////////
 153          void t0 (void)interrupt 1 using 0
 154                 { 
 155   1                TL0  = 0xb0;
 156   1                TH0  = 0x3c;
 157   1               if(count_num==19)
 158   1               {
 159   2                count_num = 0;
 160   2                second++;
 161   2                if(second>59)
 162   2                   {
 163   3                     second =0;
 164   3                     mininute++;
 165   3                       if(mininute>59)
 166   3                            {
 167   4                            mininute = 0;
 168   4                               hour++;
 169   4                              if(hour>23)
 170   4                                   hour =0;
 171   4                              }
 172   3                     }
 173   2      
 174   2                } 
 175   1               else 
 176   1              count_num++; 
 177   1      
 178   1              }
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 4   

 179          
 180          
 181          
 182          //////////////////////////////////////////////////////////////////////////////////////////////////////////
             -//////
 183          
 184          unsigned char get_key()
 185          {
 186   1        unsigned char tm_key;
 187   1      
 188   1       if(tm_key=key_is())
 189   1       {
 190   2        while(key_is())
 191   2        show();
 192   2        return tm_key ;
 193   2       
 194   2       }
 195   1       return 0;
 196   1       
 197   1      
 198   1      
 199   1        
 200   1      }
 201          
 202          
 203          void delay10()
 204          {
 205   1       unsigned char i,j;
 206   1       for(i=0;i<0x0a;i++)
 207   1       for(j=0;j<0xff;j++)
 208   1       ;
 209   1        
 210   1      
 211   1      }
 212          unsigned char key_is()
 213          {
 214   1        unsigned char tem_key,tem_key0; 
 215   1        tem_key = P1;
 216   1        tem_key &= 0x1f;
 217   1        switch (tem_key)
 218   1        { 
 219   2         case 0x01:
 220   2         case 0x02:
 221   2         case 0x04:
 222   2         case 0x08:
 223   2         case 0x10:
 224   2          delay10();
 225   2          tem_key0 = P1;
 226   2          tem_key &= 0x1f;
 227   2              if(tem_key==tem_key0)
 228   2              return tem_key;
 229   2          else 
 230   2              return 0;
 231   2              default:
 232   2              return 0;
 233   2       }
 234   1      
 235   1      }
 236          
 237          
 238          //////////////////////////////////////////////////////////////////////////////////////////////////////////
             -/////////////
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 5   

 239          void key_deal( unsigned char k)
 240          {
 241   1       
 242   1         switch(k)
 243   1        {  
 244   2      
 245   2      
 246   2       
 247   2          case  0x01:
 248   2          if(rset_flag==0)
 249   2           {
 250   3            t_second   = second;
 251   3            t_mininute = mininute;
 252   3            t_hour     = hour;
 253   3            rset_flag=1;    
 254   3           }
 255   2           else if (rset_flag==1)
 256   2           {
 257   3                 if(aset_flag ==0)
 258   3                    {
 259   4                     second = t_second;
 260   4                     mininute= t_mininute;
 261   4                     hour   =  t_hour;  
 262   4                
 263   4                     }
 264   3                  else if(aset_flag ==1)
 265   3                   {
 266   4                     a_second = t_second;
 267   4                     a_mininute= t_mininute;
 268   4                     a_hour   =  t_hour;  
 269   4                        
 270   4                   }
 271   3                  rset_flag = 0; 
 272   3            }
 273   2           break;
 274   2          case 0x02:
 275   2                    setw++;
 276   2                    if(setw>3)
 277   2                    setw =0;
 278   2      
 279   2                                        break;
 280   2       
 281   2              case 0x04:
 282   2          switch(setw)
 283   2              {
 284   3                 case 0:  
 285   3                    t_second++;
 286   3                    if(t_second>59)
 287   3                    t_second = 0;
 288   3                    break;
 289   3                      
 290   3                  
 291   3                 
 292   3                 case 1:
 293   3                       t_mininute++;
 294   3                       if(t_mininute>59)
 295   3                       t_mininute = 0;
 296   3                       break;       
 297   3      
 298   3                  case 2:
 299   3                            t_hour++;
 300   3                            if(t_hour>23)
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 6   

 301   3                            t_hour =0;
 302   3                 break;
 303   3                 default:
 304   3                 break;                         
 305   3      
 306   3                  
 307   3             }
 308   2            break;
 309   2       
 310   2      
 311   2          case 0x08:
 312   2                  switch(setw)
 313   2              {
 314   3                 case 0:  
 315   3                    t_second--;
 316   3                    if(t_second==255)
 317   3                    t_second = 59;
 318   3                    break;
 319   3                      
 320   3                  
 321   3                 
 322   3                 case 1:
 323   3                       t_mininute--;
 324   3                       if(t_mininute==255)
 325   3                       t_mininute =59;
 326   3                       break;       
 327   3      
 328   3                  case 2:
 329   3                            t_hour--;
 330   3                            if(t_hour==255)
 331   3                            t_hour =23;
 332   3                 break;
 333   3                 default:
 334   3                 break;                         
 335   3      
 336   3                  
 337   3             }
 338   2           break;
 339   2       
 340   2         
 341   2      
 342   2              case 0x10:
 343   2                       if(aset_flag==0)
 344   2                    aset_flag=1;
 345   2                   else
 346   2                     {
 347   3                          aset_flag =0;
 348   3                          if(atime==1)
 349   3                           atime =0;
 350   3               
 351   3                     }
 352   2                                              break;
 353   2      
 354   2          default:
 355   2             break;
 356   2        
 357   2       }
 358   1      
 359   1      
 360   1      
 361   1      }
 362          
C51 COMPILER V7.00  CLOCK                                                                  07/29/2008 10:39:37 PAGE 7   

 363          
 364          
 365          ////////////////////////////////////////////////////////////////////////////////////


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