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

📄 1302.lst

📁 单片机最小系统原理图
💻 LST
📖 第 1 页 / 共 2 页
字号:
 204   1       }
 205          
 206          void key(void)
 207           {  
 208   1         
 209   1         if(k1==0)
 210   1          {
 211   2           display();                       //延时去抖动
 212   2           if(k1==0)
 213   2            {
 214   3             TR0=1;                         //启动定时器
 215   3             bit_count++;
 216   3             while(k1==0) display();        //等键释放
 217   3             while(1) 
 218   3              { 
 219   4               
 220   4      
 221   4               if(k1==0) /*设定/移位*/          
 222   4                {
 223   5                 display();                 //延时去抖动
 224   5                 if(k1==0)
 225   5                  {
 226   6                   bit_count++;
 227   6                   while(k1==0) display(); 
 228   6                  }
 229   5                }
 230   4      
 231   4               
 232   4               if(k2==0)/*调整(+)*/
 233   4                {
 234   5                 display();
 235   5                 if(k2==0)
 236   5                  {
 237   6                   while(k2==0) display(); 
 238   6                   display_seg[bit_count-1]=display_seg[bit_count-1]+1;
 239   6                  /*实际数据调整位=位实际位闪烁位-1*/
 240   6      /****************************月份***********************************/
C51 COMPILER V8.02   1302                                                                  05/19/2008 20:25:32 PAGE 5   

 241   6                   if(bit_count-1==4)      //月十位判别
 242   6                    {
 243   7                      if(display_seg[bit_count-1]==2) display_seg[bit_count-1]=0;
 244   7                    }
 245   6                   if(bit_count-1==5&&display_seg[4]==1)      //月个位判别
 246   6                    { if(display_seg[bit_count-1]==3) display_seg[bit_count-1]=0;}
 247   6      /****************************日期***********************************/             
 248   6                   if(bit_count-1==6) //日期十位判别
 249   6                    {
 250   7                     if((display_seg[4]+display_seg[5])==2) 
 251   7                       if(display_seg[bit_count-1]==3) display_seg[bit_count-1]=0;
 252   7                     if(display_seg[bit_count-1]==4) display_seg[bit_count-1]=0;
 253   7                    }
 254   6      /****************************星周***********************************/  
 255   6                   if(bit_count-1==8) if(display_seg[bit_count-1]==8) display_seg[bit_count-1]=1;
 256   6      /****************************时分秒***********************************/  
 257   6                   if(bit_count-1==9) if(display_seg[bit_count-1]==3) display_seg[bit_count-1]=0;//时十位
 258   6                   if(bit_count-1==10)//时个位
 259   6                     {
 260   7                      if(display_seg[9]==2) if(display_seg[bit_count-1]==4) display_seg[bit_count-1]=0;
 261   7                        else if(display_seg[bit_count-1]==10) display_seg[bit_count-1]=0;
 262   7                     }
 263   6                   if(bit_count-1==11||bit_count-1==13)//分十位/秒十位
 264   6                      if(display_seg[bit_count-1]==6) display_seg[bit_count-1]=0;
 265   6          /*********************************************************************/
 266   6                   if(display_seg[bit_count-1]==10) display_seg[bit_count-1]=0;
 267   6                  }
 268   5                }
 269   4      
 270   4               if(k3==0)/*调整(-)*/
 271   4                {
 272   5                 display();
 273   5                 if(k3==0)
 274   5                  {
 275   6                   while(k3==0) display(); 
 276   6                   display_seg[bit_count-1]=display_seg[bit_count-1]-1;
 277   6                   if(display_seg[bit_count-1]==0xff) display_seg[bit_count-1]=0;
 278   6                   if(bit_count-1==8) if(display_seg[bit_count-1]==0) display_seg[bit_count-1]=1;
 279   6                  }
 280   5                }
 281   4      
 282   4      
 283   4               if(bit_count==16) 
 284   4                {  
 285   5                  TR0=0;
 286   5                  bit_count=0;
 287   5                  complex_data();
 288   5                  write_1302();
 289   5                  break ;
 290   5                } 
 291   4               display();
 292   4               
 293   4              }
 294   3            }
 295   2          }
 296   1        if(k4==0)/*闹钟设定键*/     
 297   1         {
 298   2          display();
 299   2          if(k4==0)
 300   2           {
 301   3            while(k4==0) display();          //等键释放
 302   3            TR0=1;                           //启动定时器
C51 COMPILER V8.02   1302                                                                  05/19/2008 20:25:32 PAGE 6   

 303   3            bit_count=10;
 304   3            clock_write();                   //显示闹钟时间(将闹钟数据写入显示缓冲区)
 305   3            while(1)
 306   3             {
 307   4               display();
 308   4               if(k4==0) /*设定/移位*/          
 309   4                {
 310   5                 display();                  //延时去抖动
 311   5                 if(k4==0)
 312   5                  {
 313   6                   bit_count++;
 314   6                   while(k4==0) display();   //等键释放
 315   6                  }
 316   5                }
 317   4      
 318   4               if(k2==0)/*调整(+)*/
 319   4                {
 320   5                 display();
 321   5                 if(k2==0);
 322   5                  {
 323   6                   while(k2==0) display(); //等键释放
 324   6                   display_seg[bit_count-1]=display_seg[bit_count-1]+1;
 325   6      
 326   6      /****************************时分秒***********************************/  
 327   6                   if(bit_count-1==9) if(display_seg[bit_count-1]==3) display_seg[bit_count-1]=0;//时十位
 328   6                   if(bit_count-1==10)//时个位
 329   6                     {
 330   7                      if(display_seg[9]==2) if(display_seg[bit_count-1]==4) display_seg[bit_count-1]=0;//
 331   7                        else if(display_seg[bit_count-1]==10) display_seg[bit_count-1]=0;
 332   7                     }
 333   6                   if(bit_count-1==11||bit_count-1==13)//分十位/秒十位
 334   6                      if(display_seg[bit_count-1]==6) display_seg[bit_count-1]=0;
 335   6          /*********************************************************************/
 336   6                   if(display_seg[bit_count-1]==10) display_seg[bit_count-1]=0;
 337   6                  }
 338   5                }
 339   4      
 340   4               if(k3==0)/*调整(-)*/
 341   4                {
 342   5                 display();
 343   5                 if(k3==0);
 344   5                  {
 345   6                   while(k3==0) display(); //等键释放
 346   6                   display_seg[bit_count-1]=display_seg[bit_count-1]-1;
 347   6                   if(display_seg[bit_count-1]==0xff) display_seg[bit_count-1]=0;
 348   6                   
 349   6                  }
 350   5                }
 351   4      
 352   4      
 353   4               if(bit_count==14) 
 354   4                {  
 355   5                  TR0=0;
 356   5                  bit_count=0;
 357   5                  clock_save();
 358   5                  break ;
 359   5                } 
 360   4             }
 361   3           }
 362   2         }
 363   1      
 364   1          if(k5==0) /*闹钟开关*/          
C51 COMPILER V8.02   1302                                                                  05/19/2008 20:25:32 PAGE 7   

 365   1                {
 366   2                 display();                   
 367   2                 if(k5==0)
 368   2                  {
 369   3                   clock_flag=~clock_flag;     //置标志位
 370   3                   clock_switch=~clock_switch;
 371   3                   while(k5==0) display();    
 372   3                  }
 373   2                }
 374   1      
 375   1      
 376   1      
 377   1       }
 378          /***************************************/
 379          void main(void)
 380           {
 381   1        TMOD=0x01;                 //定时器初始化
 382   1        TH0=0x3c;                  //定时100MS中断一次
 383   1        TL0=0xb0; 
 384   1        //TR0=1;     
 385   1        ET0=1;                     //开定时器中断
 386   1        EA=1;                      //开总中断
 387   1      
 388   1        clock_flag=0;              //闹钟功能开
 389   1        clock_switch=1;            //闹钟控制指示关
 390   1        clock_bell=1;              //闹铃关
 391   1      
 392   1        write_1302();
 393   1        
 394   1        while(1)
 395   1        {
 396   2         read_1302();
 397   2         display();
 398   2         key();
 399   2         clock_compare();
 400   2        }
 401   1       } 


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