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

📄 ht1621.lst

📁 HT1621驱动和EEPROM93LC
💻 LST
📖 第 1 页 / 共 2 页
字号:
 245   2              WRITE(0x01,time2.hourclock);//hour 
 246   2          WRITE(0x02,time2.minclock);//min    
 247   2          TR0=1;
 248   2         }
 249   1      }
 250          
 251          void ScanKey(void)
 252          {if(Switch==0)
 253   1       {DelayMS1(65);
 254   2        if(Switch==0)
 255   2        Count++;
 256   2       }
 257   1       if(Count!=0)
 258   1       ProcessKey();
 259   1      }
 260          
 261          void DisplayChange(void)
 262          {  if(Count==0)
 263   1         {Ht1621WrDataCmd(0);    
 264   2         Ht1621WrByte(Ht1621code[time1.min%10]);      
 265   2         Ht1621WrDataCmd(2);
 266   2         Ht1621WrByte(Ht1621code[time1.min/10]);   
 267   2         Ht1621WrDataCmd(5);
 268   2         Ht1621WrByte(Ht1621code[time1.hour%10]);  
 269   2         Ht1621WrDataCmd(7);
 270   2         if(time1.hour<10)
 271   2         Ht1621WrByte(0); 
 272   2         else
 273   2         Ht1621WrByte(Ht1621code[time1.hour/10]);
 274   2         Ht1621WrDataCmd(9);
 275   2         Ht1621WrByte(0x00);   
 276   2         } 
 277   1         else if(Count==1) 
 278   1         {Ht1621WrDataCmd(0);    
 279   2          Ht1621WrByte(Ht1621code[time1.min%10]);      
 280   2          Ht1621WrDataCmd(2);
 281   2          Ht1621WrByte(Ht1621code[time1.min/10]);  
 282   2          Ht1621WrDataCmd(5);
 283   2          Ht1621WrByte(Ht1621code[time1.hour%10]);  
 284   2          Ht1621WrDataCmd(7);
 285   2          if(time1.hour<10)
 286   2          Ht1621WrByte(0); 
 287   2          else
 288   2          Ht1621WrByte(Ht1621code[time1.hour/10]);
 289   2          Ht1621WrDataCmd(9);
 290   2          Ht1621WrByte(0x08);    
 291   2         } 
 292   1         else if(Count==2)
 293   1         {Ht1621WrDataCmd(5);
 294   2          Ht1621WrByte(0);  
 295   2          Ht1621WrDataCmd(7);
 296   2          if(ampm==0)
 297   2          Ht1621WrByte(Ht1621code[10]);
 298   2          else
 299   2          Ht1621WrByte(Ht1621code[11]);    
 300   2          Ht1621WrDataCmd(0);    
 301   2          Ht1621WrByte(Ht1621code[time1.sec%10]);      
 302   2          Ht1621WrDataCmd(2);
 303   2          Ht1621WrByte(Ht1621code[time1.sec/10]); 
C51 COMPILER V7.06   HT1621                                                                05/14/2008 14:59:23 PAGE 6   

 304   2          Ht1621WrDataCmd(9);
 305   2          Ht1621WrByte(0x08);
 306   2         } 
 307   1         else if(Count==3)
 308   1         {Ht1621WrDataCmd(9);
 309   2          Ht1621WrByte(0x01);
 310   2          Ht1621WrDataCmd(0);       
 311   2          Ht1621WrByte(0);      
 312   2          Ht1621WrDataCmd(2);
 313   2          if(time2.ampmclock==0)
 314   2          Ht1621WrByte(Ht1621code[10]); 
 315   2          else
 316   2          Ht1621WrByte(Ht1621code[11]);
 317   2          Ht1621WrDataCmd(5);
 318   2          Ht1621WrByte(0);  
 319   2          Ht1621WrDataCmd(7);
 320   2          Ht1621WrByte(0);    
 321   2         }
 322   1         else if(Count==4)
 323   1         {Ht1621WrDataCmd(9);
 324   2          Ht1621WrByte(0x01);
 325   2          Ht1621WrDataCmd(0);    
 326   2          Ht1621WrByte(Ht1621code[time2.minclock%10]);      
 327   2          Ht1621WrDataCmd(2);
 328   2          Ht1621WrByte(Ht1621code[time2.minclock/10]);   
 329   2          Ht1621WrDataCmd(5);
 330   2          Ht1621WrByte(Ht1621code[time2.hourclock%10]);  
 331   2          Ht1621WrDataCmd(7);
 332   2          if(time2.hourclock<10)
 333   2          Ht1621WrByte(0); 
 334   2          else
 335   2          Ht1621WrByte(Ht1621code[time2.hourclock/10]);    
 336   2         }
 337   1       if(Count<3)      
 338   1        {if(_500msflag==1)
 339   2         {Ht1621WrDataCmd(4);
 340   3          Ht1621WrByteDot(0x80);    
 341   3         }    
 342   2         if(_500msflag==0)
 343   2         {Ht1621WrDataCmd(4);
 344   3          Ht1621WrByteDot(0x00);    
 345   3         } 
 346   2        }
 347   1       else 
 348   1       {Ht1621WrDataCmd(4);
 349   2        Ht1621WrByteDot(0x40); 
 350   2       } 
 351   1      }
 352          void timer0(void) interrupt 1 using 0
 353          { TH0=0x7d; //50ms*20     8MHz
 354   1        TL0=0xd9; 
 355   1        sec20++; 
 356   1        if(sec20<10)  
 357   1         {_500msflag=1;
 358   2         }
 359   1       if(sec20>=10)
 360   1         {_500msflag=0;
 361   2         }
 362   1       if(sec20>=20)
 363   1         {sec20=0;
 364   2          inc_sec();
 365   2         } 
C51 COMPILER V7.06   HT1621                                                                05/14/2008 14:59:23 PAGE 7   

 366   1        
 367   1      }
 368          void play(void)
 369          {
 370   1      if(beep_flag==0)
 371   1       return;
 372   1       if(counter>0)
 373   1          counter--;
 374   1       else
 375   1         {
 376   2          i++;
 377   2           if(i==0||i==2||i==4||i==6||i==8)counter=300;
 378   2           if(i==1||i==3||i==5||i==7||i==9||i==11)counter=200;
 379   2           if(i==10)counter=525;
 380   2         }
 381   1       if(i==0||i==2||i==4||i==6||i==8||i==10)
 382   1       {
 383   2         P3_3=1;
 384   2       }
 385   1       else if(i==1||i==3||i==5||i==7||i==9||i==11)
 386   1         P3_3=0;
 387   1       else 
 388   1       {
 389   2       i=0;
 390   2       beep_flag=0;
 391   2       }
 392   1      } 
 393          void timer1(void) interrupt 3  using 1
 394            { TH1=0xfa; //2ms      8MHz
 395   1          TL1=0xd9;    
 396   1        if(ampm==time2.ampmclock&&time1.hour==time2.hourclock&&time1.min==time2.minclock&&time1.sec==00)beep_fla
             -g=1;
 397   1        play();
 398   1        if(time1.min==00||beep_flag==1)
 399   1          {
 400   2              Light_flag++;
 401   2           if(Light_flag==250)    
 402   2             {Light_flag=0;
 403   3              light();
 404   3             } 
 405   2          }
 406   1         else P1=0x00;
 407   1        }
 408          
 409          void inc_hour(void)
 410          {
 411   1       time1.hour++;
 412   1       if(time1.hour >12)
 413   1       {
 414   2       time1.hour = 1;
 415   2       ampm=!ampm;
 416   2       } 
 417   1      }
 418          
 419          void inc_min(void)
 420          {
 421   1       time1.min++; 
 422   1       if(time1.min > 59)
 423   1       {
 424   2        time1.min = 0;
 425   2        inc_hour();
 426   2       }
C51 COMPILER V7.06   HT1621                                                                05/14/2008 14:59:23 PAGE 8   

 427   1      }
 428          
 429          void inc_sec(void)
 430          {
 431   1       time1.sec++; 
 432   1       if(time1.sec > 59)
 433   1       {
 434   2       time1.sec = 0;
 435   2       inc_min();
 436   2       }
 437   1      }
 438          
 439          void light(void)
 440          {if(Ledloop<4)
 441   1       {P1=Led[Ledloop];
 442   2        Ledloop++;
 443   2        if(Ledloop>=4)
 444   2        Ledloop=0;
 445   2       }
 446   1      }
 447          
 448          void delayms(uint i)  //毫秒延时子程序
 449          { while(--i);      //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
 450   1      }
 451          
 452          void main(void)
 453          { 
 454   1       TMOD = 0x11; // 定时器0, 1 工作模式1, 16 位定时方式
 455   1       IE = 0x8a; // 使能timer0,1 中断
 456   1       TH0=0x7d; //50ms
 457   1       TL0=0xd9;
 458   1       TH1=0xfa; //2ms
 459   1       TL1=0xd9;  
 460   1       TR0 = 1; TR1 = 1;  
 461   1       P1=0x00; P2=0xff; P3_3=0;
 462   1       Ht1621_Init();     //上电初始化LCD 
 463   1      if(READ(0x04)!=12)
 464   1       {WRITE(0x01,time2.hourclock);//hour
 465   2        WRITE(0x02,time2.minclock);//min
 466   2        WRITE(0x03,time2.ampmclock);//ampm
 467   2        WRITE(0x04,12);
 468   2       }
 469   1       else
 470   1       {time2.ampmclock=READ(0x03); 
 471   2        time2.hourclock=READ(0x01);
 472   2        time2.minclock=READ(0x02);
 473   2       }
 474   1      while(1)
 475   1         {DisplayChange();  
 476   2          ScanKey();                                       
 477   2         }
 478   1      } 
 479          
 480          
 481          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1881    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.06   HT1621                                                                05/14/2008 14:59:23 PAGE 9   

   DATA SIZE        =     17       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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