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

📄 clock627.lst

📁 一个本人编写的时钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 196   2      
 197   2                       Select_led3(); 
 198   2               Send74ls164(Sag_led234[DispBuf[6]]);
 199   2               Delay(2500);
 200   2                      break;
 201   2      
 202   2              case 0x9: //显示 时
 203   2                       Select_led2(); 
 204   2               Send74ls164(Sag_led234[DispBuf[3]]);
 205   2               Delay(2500);
 206   2      
 207   2                       Select_led1(); 
 208   2               Send74ls164(Sag_led1[DispBuf[4]]);
 209   2               Delay(2500);
 210   2                      break;
 211   2      
 212   2              case 12: //0x0C: //显示 分
 213   2                   Select_led4();     
 214   2               Send74ls164(Sag_led234[DispBuf[1]]);
 215   2               Delay(2500);
 216   2      
 217   2                       Select_led3(); 
 218   2               Send74ls164(Sag_led234[DispBuf[2]]);
 219   2               Delay(2500);
 220   2                      break;
 221   2      
 222   2                  default:
 223   2                  break;
 224   2      
 225   2           }
 226   1      }
 227          
 228          void KeyScan()
 229          { 
 230   1        if(key1flag==0)
 231   1          {
 232   2                if(key2flag==0)
 233   2                  {
 234   3                        if(key1==0)
 235   3                        {     //key1子程序
 236   4                           if(DispFlag==1)
 237   4                                {
 238   5                                 // 无动作 
 239   5                                }
 240   4                           else if(DispFlag==2)
 241   4                                {      
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 5   

 242   5                                  SecondBuf=0;//秒缓冲区清0
 243   5                                }
 244   4                               else
 245   4                                {       
 246   5                                  DispFlag+=3;
 247   5                                  key1flag=1;
 248   5                                }
 249   4                              if(DispFlag>12)//0x0C)
 250   4                              {
 251   5                                DispFlag=0; 
 252   5                              }
 253   4                        }
 254   3                        else if(key2==0)
 255   3                                  {
 256   4                                      //key2子程序
 257   4                                         switch(DispFlag)
 258   4                                         {
 259   5                                            case 0: //显示"月,日"
 260   5                                                  
 261   5                                                  DispFlag+=1;
 262   5                                                      key2flag=1;
 263   5                                               break;
 264   5      
 265   5                                                case 1: //显示"秒"
 266   5                                                  DispFlag+=1;
 267   5                                                      key2flag=1;
 268   5                                               break;
 269   5      
 270   5                                                case 2: //返回显示"时,分"
 271   5                                                  DispFlag=0;
 272   5                                                      key2flag=1;
 273   5                                               break;
 274   5      
 275   5                                                case 3: //"月"+1 
 276   5                                                  MonthBuf+=1;
 277   5                                                      if(MonthBuf>59)
 278   5                                                       {
 279   6                                                         MonthBuf=0; 
 280   6                                                       }
 281   5                                               break;
 282   5      
 283   5                                                case 6: //"日"+1 
 284   5                                                  DayBuf+=1;
 285   5                                              //      if(MonthBuf%2==0)
 286   5                                                      //  {   
 287   5                                                       //  if(DayBuf>30)
 288   5                                                       //    {
 289   5                                                       //  DayBuf=0; 
 290   5                                                       //    }
 291   5                                                      //  }
 292   5                                              //      else
 293   5                                                       //{
 294   5                                                        if(DayBuf>31)
 295   5                                                           {
 296   6                                                         DayBuf=0; 
 297   6                                                           }
 298   5                                              //       }
 299   5                                               break;
 300   5      
 301   5                                                case 9: //"时"+1 
 302   5                                                  HourBuf+=1;
 303   5                                                  if(HourBuf>23)
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 6   

 304   5                                                       {
 305   6                                                         HourBuf=0; 
 306   6                                                       }
 307   5                                               break;
 308   5      
 309   5                                                case 12://"分"+1 
 310   5                                                  MinuteBuf+=1;
 311   5                                                      if(MinuteBuf>59)
 312   5                                                       {
 313   6                                                         MinuteBuf=0; 
 314   6                                                       }
 315   5                                               break;
 316   5      
 317   5                                               default:
 318   5                                               break;
 319   5                                         }
 320   4      
 321   4                                      //返回
 322   4                                      }
 323   3                      } 
 324   2                else if(key2==1)
 325   2                     {
 326   3                        key2flag=0;
 327   3                     }
 328   2              }
 329   1        else if(key1==1)
 330   1                 {
 331   2                   key1flag=0;
 332   2                 }
 333   1      }
 334          /************************************************************/
 335          //定时器0中断
 336          /************************************************************/
 337          void timer() interrupt 1 using 2
 338          { 
 339   1        MSCNT++;
 340   1        KeyScan();//键扫描
 341   1        TH0=0x0;
 342   1        TL0=0x0;
 343   1        if(MSCNT>7)
 344   1        {
 345   2              MSCNT=0;
 346   2          SecondBuf+=1;
 347   2              if(SecondBuf>59)
 348   2              {
 349   3                 SecondBuf=0;
 350   3                 MinuteBuf+=1;
 351   3                 if(MinuteBuf>59)
 352   3                 {                                            
 353   4                    MinuteBuf=0;
 354   4                        HourBuf+=1;
 355   4                        if(HourBuf>23)
 356   4                        {
 357   5                           HourBuf=0;
 358   5                        }
 359   4                 }
 360   3              }
 361   2              
 362   2        }
 363   1      }
 364          void main(void)                                                                                                                  
 365          {
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 7   

 366   1        ClearDispBuf();//初始时清显示缓冲区    
 367   1        TMOD=0x01;
 368   1        TH0=0x0;
 369   1        TL0=0x0;
 370   1        EA=1;
 371   1        ET0=1;
 372   1        TR0=1;
 373   1        MSCNT=0;
 374   1      
 375   1        ls164_ab=0;
 376   1        ls164_clk=0;
 377   1      
 378   1        DispFlag=0;
 379   1        loop: 
 380   1            Disp();
 381   1                goto loop;
 382   1              
 383   1      }
 384          


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