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

📄 dianzishizhong.txt

📁 基于单片机的多功能电子时钟的c51源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
        dip[0] = hour / 10;
        dip[1] = hour % 10;
        dip[2] = minute / 10;
           dip[3] = minute % 10;
        dip[4] = second / 10;
           dip[5] = second % 10;
    }

    set_sec = 0;
       set_min = 0;
       set_hour = 0;

       run = 1;
    
  }
 }
 else if(!inc)    // “ + ”
 {
     if(run)
     { 
     
   if(ring0_see) ring0_lock = 1;    // 关闭闹铃1

   if(ring1_see)  ring1_lock = 1;       // 关闭闹铃2

   if(ring2_see)   ring2_lock = 1;    // 关闭闹铃3
                   
   
  }
  else
  {
   
       if(set_sec)
       {
           if(++dip[5] > 9)
        {
             dip[5] = 0;
          if(++dip[4] > 5)
               dip[4] = 0;
        }
       }
       else if(set_min)
       {
            if(++dip[3] > 9)
         {
              dip[3] = 0;
           if(++dip[2] > 5)
                dip[2] = 0;
             }
        }
        else if(set_hour)
        {     
             if(dip[0] < 2)
          {
              if(++dip[1] > 9)
           { 
                dip[1] = 0;
             ++dip[0];
           }
           }
           else if(dip[0] == 2)
           {
                if(++dip[1] > 3)
             {
                  dip[1] = 0;
               dip[0] = 0;
              }
            } 

              
         }
      hour_before   = dip[0]*10 + dip[1];
         minute_before = dip[2]*10 + dip[3];
        second_before = dip[4]*10 + dip[5];
   }
  }  
  else if(!ring)       // 闹铃键
  {
        if(run)
     { 
          
          hour_ring_before   = hour;
    minute_ring_before = minute;
    second_ring_before = second;

    if(time_recall)
    {   
        ring0_see   = 1;
     ring1_see   = 0;
     ring2_see   = 0;

     time_recall = 0;

     ring_see    = 1;

     set_ring0 = 1;
     set_ring1 = 0;
     set_ring2 = 0;

    
    }
                else if(ring0_see)
    {
        ring0_see   = 0;
     ring1_see   = 1;
     ring2_see   = 0;

     time_recall = 0;

     ring_see    = 1;

     set_ring0 = 0;
     set_ring1 = 1;
     set_ring2 = 0;
    }
    else if(ring1_see)
    {
        ring0_see   = 0;
     ring1_see   = 0;
     ring2_see   = 1;

     time_recall = 0;

        ring_see    = 1;

        set_ring0 = 0;
        set_ring1 = 0;
        set_ring2 = 1;

    }
                else if(ring2_see)
    {
                         
       hour = hour_set_before;  
             minute = minute_set_before; 
             second = second_set_before;


       if(count_second < 60)
             second = second + count_second % 60;
       if(second > 60);
       {      
          second = second % 60;
       minute = minute + second / 60;
       }

       if(count_second > 60)
       {
             minute = minute + count_second / 60;
          second = second + count_second % 60;
       }

      dip[0] = hour / 10;
            dip[1] = hour % 10;
            dip[2] = minute / 10;
               dip[3] = minute % 10;
            dip[4] = second / 10;
               dip[5] = second % 10;

      ring0_see   = 0;
      ring1_see   = 0;
      ring2_see   = 0;

      set_ring0 = 0;
         set_ring1 = 0;
         set_ring2 = 0;

      time_recall = 1;   
      
      ring_see    = 0;

      count_second = 0;

    }
 
     }
     else
     {

       if(!store_ring || (set_ring0 && !set_ring1 && !set_ring2))           // 存储闹铃1
       {
             
       ring0 = hour_before*100 + minute_before;
       
        store_ring0 = 1;
       store_ring1 = 0;
       store_ring2 = 0;

       store_ring  = 1;

     
       hour = hour_set_before;  
                minute = minute_set_before; 
                second = second_set_before;


       if(count_second < 60)
                second = second + count_second % 60;
       if(second > 60);
       {      
              second = second % 60;
           minute = minute + second / 60;
       }

          if(count_second > 60)
          {
                minute = minute + count_second / 60;
             second = second + count_second % 60;
           }

        dip[0] = hour / 10;
                 dip[1] = hour % 10;
                 dip[2] = minute / 10;
                 dip[3] = minute % 10;
                 dip[4] = second / 10;
                 dip[5] = second % 10;

       set_sec  = 0;
                   set_min  = 0;
                   set_hour = 0;

       set_ring = 0;

       count_second = 0;

       run = 1;
      
     }
     else if(store_ring0 || (!set_ring0 && set_ring1 && !set_ring2))     // 存储闹铃2
     {
             ring1 = hour_before*100 + minute_before;
      
       store_ring0 = 0;
       store_ring1 = 1;
        store_ring2 = 0;

       store_ring  = 1;

       hour = hour_set_before;  
                minute = minute_set_before; 
                second = second_set_before;


       if(count_second < 60)
                second = second + count_second % 60;
       if(second > 60);
       {      
              second = second % 60;
           minute = minute + second / 60;
       }

          if(count_second > 60)
          {
                minute = minute + count_second / 60;
             second = second + count_second % 60;
           }

        dip[0] = hour / 10;
                 dip[1] = hour % 10;
                 dip[2] = minute / 10;
                 dip[3] = minute % 10;
                 dip[4] = second / 10;
                 dip[5] = second % 10;

        set_sec  = 0;
                    set_min  = 0;
                    set_hour = 0;

        set_ring = 0;

        count_second = 0;

        run = 1;

     }
     else if(store_ring1 || (!set_ring0 && !set_ring1 && set_ring2))    //  存储闹铃3
     {

       ring2  = hour_before*100 + minute_before;
       
       store_ring0 = 0;
       store_ring1 = 0;
       store_ring2 = 1;

                hour = hour_set_before;  
                minute = minute_set_before; 
                second = second_set_before;

       if(count_second < 60)
                second = second + count_second % 60;
       if(second > 60);
       {      
              second = second % 60;
           minute = minute + second / 60;
       }

          if(count_second > 60)
          {
                minute = minute + count_second / 60;
             second = second + count_second % 60;
           }

        dip[0] = hour / 10;
                 dip[1] = hour % 10;
                 dip[2] = minute / 10;
                 dip[3] = minute % 10;
                 dip[4] = second / 10;
                 dip[5] = second % 10;

        set_sec  = 0;
                    set_min  = 0;
                    set_hour = 0;

        set_ring = 0;

        count_second = 0;
 
        run = 1;
     }
     else if(store_ring2 || (!ring_full && !store_ring2))
     {
          
        store_ring0 = 0;
        store_ring1 = 0;
        store_ring2 = 0;  

        dip[0] = 14;
        dip[1] = 25;
        dip[2] = 25;
        dip[3] = 21;
        dip[4] = 25;
        dip[5] = 0;

        hour   = dip[0]*10 + dip[1];
        minute = dip[2]*10 + dip[3];
        second = dip[4]*10 + dip[5];

        ring_full = 1;
                 
     }
     else
     {
        
         hour = hour_set_before;  
                minute = minute_set_before; 
                second = second_set_before;


       if(count_second < 60)
                second = second + count_second % 60;
       if(second > 60);
       {      
              second = second % 60;
           minute = minute + second / 60;
       }

          if(count_second > 60)
          {
                minute = minute + count_second / 60;
             second = second + count_second % 60;
           }

        dip[0] = hour / 10;
                 dip[1] = hour % 10;
                 dip[2] = minute / 10;
                 dip[3] = minute % 10;
                 dip[4] = second / 10;
                 dip[5] = second % 10;

        count_second = 0;
        run = 1;

        ring_full = 0;

      }
    } 

     }
          
        
   dspplay();
}

void delay()
{

   int i;
   for(i = 0; i < 30000; i++)
   {
   ;
   ;
   }

}
      
void change()
{
  
   if(++status > 1)
        status = 0;
   if(status == 0)
       led0 = 1;
   if(status == 1)
       led0 = 0;
    
} 

 

PUBLIC _DSP

AA SEGMENT CODE
RSEG AA
_DSP:   MOV     A,R7
        MOV     R2,#8
DSP1:   CLR     P0.0
        RRC     A
        MOV     P0.1,C
        SETB    P0.0
        DJNZ    R2,DSP1
        RET
        END

⌨️ 快捷键说明

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