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

📄 +

📁 51单片机配套C程序
💻
📖 第 1 页 / 共 2 页
字号:
 166   1                              P2=7;
 167   1                              P0=ledmap[clock_mg];
 168   1                              delay(1);P0=0X00;
 169   1                  
 170   1                   
 171   1                               
 172   1      }
 173          /***********************按键延时程序=a*1ms**************************************/
 174                  void delayAJ(uchar a)
 175          {
 176   1         uchar i;
 177   1         while(a--)
 178   1         {    
 179   2              for(i=0;i<125;i++);
C51 COMPILER V7.50   DAS1302                                                               05/16/2010 10:01:11 PAGE 4   

 180   2                      {
 181   3                      led_disp();
 182   3                      }
 183   2         }
 184   1      }
 185          void key()
 186           {
 187   1         uchar clock_s1, clock_s2, clock_f1, clock_f2;
 188   1         delayAJ(5);
 189   1         if(set==0)
 190   1            {
 191   2                      delayAJ(5);//消抖
 192   2                if(set==0)
 193   2                      { 
 194   3                         b++;
 195   3                                    
 196   3                delayAJ(5);
 197   3                              }
 198   2                    while(!set)
 199   2                                {
 200   3                          
 201   3                                   delayAJ(5);
 202   3                                }
 203   2                                 
 204   2             }
 205   1              if(b!=0)//时分设定
 206   1                   {
 207   2                         if(up==0)
 208   2                            {
 209   3                                  delayAJ(5);//消抖
 210   3                                        if(up==0)
 211   3                                         { 
 212   4                           
 213   4                            if(b==1)
 214   4                             { 
 215   5                                                              hour++;
 216   5                                                              if(hour>=24)
 217   5                                                          {
 218   6                                                                      hour=0;
 219   6                                                              }
 220   5                                                              delayAJ(10);
 221   5                                                              }
 222   4                                                              
 223   4                                                              if(b==2)
 224   4                                                              { 
 225   5                                                                      mie++;
 226   5                                                                      if(mie>=60)
 227   5                                                                  {
 228   6                                                                              mie=0;
 229   6                                                                      }
 230   5                                                              delayAJ(10);
 231   5                              }//以上时钟+设定
 232   4                      }
 233   3                      
 234   3                               }
 235   2                                              
 236   2                       if(down==0)
 237   2                            {
 238   3                                delayAJ(5);//消抖
 239   3                                        if(down==0)
 240   3                                         { 
 241   4                                              delayAJ(5);
C51 COMPILER V7.50   DAS1302                                                               05/16/2010 10:01:11 PAGE 5   

 242   4                           if(b==1)
 243   4                             {
 244   5                                     hour--;
 245   5                                                              if(hour<0)
 246   5                                                          {
 247   6                                                                      hour=23;
 248   6                                                              }
 249   5                                                 delayAJ(10);
 250   5                                             }
 251   4                        if(b==2)
 252   4                             {
 253   5                                 mie--;
 254   5                                                      if(mie<0)
 255   5                                                  
 256   5                                                              {
 257   6                                                              mie=59;
 258   6                                                          }
 259   5                                              delayAJ(10);
 260   5                                             }//以上时钟-设定
 261   4                       
 262   4                    }
 263   3              }
 264   2      //********************以下是转BCD码的程序 DS1302认BCD码 
 265   2                              clock_s1=hour/10;
 266   2                              clock_s2=hour%10;
 267   2                              clock_s1=clock_s1&0xff;
 268   2                              clock_s2=clock_s2&0xff;
 269   2                              clock_s1<<=4;
 270   2                              clock_s1=clock_s1|clock_s2;//  10to16
 271   2                              
 272   2                              clock_f1=mie/10;
 273   2                              clock_f2=mie%10;
 274   2                              clock_f1=clock_f1&0xff; //全1出1 与运算
 275   2                              clock_f2=clock_f2&0xff;
 276   2                              clock_f1<<=4;
 277   2                              clock_f1=clock_f1|clock_f2;//  10to16
 278   2      //*******************************************转BCD码的程序 DS1302认BCD码 
 279   2                 } 
 280   1                      
 281   1         if(b==3)
 282   1            {
 283   2                       b=0;
 284   2      
 285   2               
 286   2                              write_1302(0x8e,0x00); //WP=0 写操作
 287   2                              write_1302(0x80,0x01);//0x80是写秒数据此处写进"01"秒
 288   2                              write_1302(0x82,clock_f1);//0x82是写分数据
 289   2                              write_1302(0x84,clock_s1);//0x84是写时数据
 290   2                              write_1302(0x8e,0x80); //WP=1 写保护  
 291   2                              delay(255);
 292   2                       }
 293   1         
 294   1      
 295   1                       
 296   1        }
 297          /************************主程序**********************************************/
 298          void main(void)
 299          {  
 300   1        
 301   1        
 302   1                      uchar  temp=0x80;          
 303   1                      uchar i;
C51 COMPILER V7.50   DAS1302                                                               05/16/2010 10:01:11 PAGE 6   

 304   1                      b=0;
 305   1                      P3=0xff;
 306   1      
 307   1         while(1)
 308   1         {  
 309   2                  
 310   2             
 311   2                temp=0x81;//读的初始地址                    
 312   2            for(i=0;i<3;i++)//分别把秒分时数据读出分3次读好一次地址加2" temp+=2;"
 313   2                {
 314   3                   clk_time[i]=read_1302(temp);
 315   3                       temp+=2;
 316   3                }
 317   2          key();//键盘扫描
 318   2          }
 319   1      }
 320          
 321          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    831    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       3
   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 + -