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

📄 main.c

📁 用单片机实现(载波监听/冲突检测)的功能
💻 C
📖 第 1 页 / 共 5 页
字号:
       
       if((DisplayFlg & ChangeWorkFlg) !=ChangeWorkFlg)
         DisplayFlg = DShrinkFlg;                                      //闪烁状态
       else 
       {
         DisplayFlg = DShrinkFlg;
         DisplayFlg |= ChangeWorkFlg;
       }
       DisplayFlg |= NumSetFlg;                                      //工数设
       ConvertData(Number);
     }
     else  if(Key == 0X08)                                           //计划设定 (1键)
     {
       Flag |= ResetFlg;                                    //设置状态
       Flag &= ~LCJ;
       Flag &= ~RUNFlg;
       if((DisplayFlg & ChangeWorkFlg) !=ChangeWorkFlg)
         DisplayFlg = DShrinkFlg;                                      //闪烁状态
       else 
       {
         DisplayFlg = DShrinkFlg;
         DisplayFlg |= ChangeWorkFlg;
       }
       DisplayFlg |= PlanSetFlg;                           //计划设定
       ConvertData(Plan);       
     }
     else if(Key == 0X01)                                  //按键2 时钟设定
     {
       Flag |= ResetFlg;                                    //设置状态
       Flag &= ~LCJ;
       Flag &= ~RUNFlg;
       if((DisplayFlg & ChangeWorkFlg) !=ChangeWorkFlg)
         DisplayFlg = DShrinkFlg;                                      //闪烁状态
       else 
       {
         DisplayFlg = DShrinkFlg;
         DisplayFlg |= ChangeWorkFlg;
       }
       DisplayFlg |= ClockSetFlg;                          //计划设定
       temp = Hour*100+Min;
       ConvertData(temp);
     }
     else if(Key == 0X0A)                                  //按键3 本机地址设定  
     {
       Flag |= ResetFlg;                                    //设置状态
       Flag &= ~LCJ;
       Flag &= ~RUNFlg;
      if((DisplayFlg & ChangeWorkFlg) !=ChangeWorkFlg)
         DisplayFlg = DShrinkFlg;                                      //闪烁状态
       else 
       {
         DisplayFlg = DShrinkFlg;
         DisplayFlg |= ChangeWorkFlg;
       }
       DisplayFlg |= AddressSetFlg;                        //计划设定
       ConvertData(SelfAddress);       
     }
     else if(Key == 0X06)                                 //第一班时间设定
     {
        
        Flag |= ResetFlg;                                 //设置状态
        Flag &= ~LCJ;                                     //非启动状态
        Flag &= ~RUNFlg;                                  //非运状态行
        if((DisplayFlg & ChangeWorkFlg) !=ChangeWorkFlg)
          DisplayFlg = DShrinkFlg;                                      //闪烁状态
        else 
        {
          DisplayFlg = DShrinkFlg;
          DisplayFlg |= ChangeWorkFlg;
        }
        if((TimeSec1[0][0] <= 2359) && (ScaleClock != -1))
        {
           DisplayFlg |= TimeIndexFlg;                           //时间段检索标志
           DisplayFlg |= CheckTimeFlg;                           //时间段索引状态
           DisplayFlg  &= ~DShrSetFlg;                           //第二行非闪烁状态
           DisplayFlg  |= DShrinkFlg;                            //第一行闪烁状态
           DisplayFlg |= TimeFirstFlg;                           //时间段索引第一次标志
        }
        else 
        {
           DisplayFlg &= ~CheckTimeFlg;                      //非时间段检查确认状态
           DisplayFlg &= ~TimeFirstFlg;
           DisplayFlg &= ~TimeIndexFlg;
        }
        DisplayFlg |= TimeSection1SetFlg;                 //时间段1设置状态
        DisplayFlg &= ~TimeSection2SetFlg;                //非时间段2设置状态
        TimeSectionIndex =0;                              //时间段设置的索引
        Index =0;                                         //时间段查询的索引
        SearchIndex = 0;                                  //时间段检索的索引
        Counter = 0;                                      //记数
        ConvertCode =0;                                   //当前设定值
     }
     else if(Key == 0X00)                                 //第二班时间设定
     {
        Flag |= ResetFlg;                                 //设置状态
        Flag &= ~LCJ;                                     //非启动状态
        Flag &= ~RUNFlg;                                  //非运行状态
        if((DisplayFlg & ChangeWorkFlg) !=ChangeWorkFlg)
          DisplayFlg = DShrinkFlg;                                      //闪烁状态
        else 
        {
          DisplayFlg = DShrinkFlg;
          DisplayFlg |= ChangeWorkFlg;
        }
        
        if((TimeSec2[0][0] <= 2359) && (ScaleClock != -1))
        {
           DisplayFlg |= TimeIndexFlg;                           //时间段检索标志
           DisplayFlg |= CheckTimeFlg;                           //时间段索引状态
           DisplayFlg  &= ~DShrSetFlg;                           //第二行非闪烁状态
           DisplayFlg |= DShrinkFlg;                            //第一行闪烁状态
           DisplayFlg |= TimeFirstFlg;                           //时间段索引第一次标志
        }
        else 
        {
           DisplayFlg &= ~CheckTimeFlg;                      //非时间段检查确认状态
           DisplayFlg &= ~TimeFirstFlg;
           DisplayFlg &= ~TimeIndexFlg;
        }
        
        DisplayFlg |= TimeSection2SetFlg;                 //时间段2的设定状态
        DisplayFlg &= ~TimeSection1SetFlg;                //非时间段1的设定状态
        TimeSectionIndex =0;
        Index =0;
        SearchIndex = 0;
        Counter = 0;
        ConvertCode =0;
     } 
      TimerCount =0;                                      //时钟定时量
      DisplayFlg &= ~FirstFlg;                            //非第一次标志状态
      DisplayFlg &= ~StartShrinkFlg;                      //非启动闪烁状态、
      Flag &= ~StartFlg;                                  //非设定状态
    }
 
  else if((Flag & ResetFlg) == ResetFlg)                  //在设定状态下,进行数据输入
  {
    if((Key == 0X0B))                                     //按键CLR清除设定数据
     {
       if(((DisplayFlg & TimeSection1SetFlg) == TimeSection1SetFlg))
       {
         for(Counter =0; Counter<25; Counter++)
         {
           if(Counter<9)
           {
             TimeSec2[Counter][0] =8888;                  //时间段1的清零操作
             TimeSec2[Counter][1] =8888;
           }
           TimeSec1[Counter][0] = 8888;
           TimeSec1[Counter][1] = 8888;
           ScaleClock = -1;
           Key = 0X0E ;                                  //进入取消操作处理 
         }
       }
       else if((DisplayFlg & TimeSection2SetFlg) == TimeSection2SetFlg)
       {
         for(Counter =0; Counter<9; Counter++)
         {
           TimeSec2[Counter][0] = 8888;                 //时间段2的清零操作
           TimeSec2[Counter][1] = 8888;
         }
         for(i=0; i<25; i++)
         {
           if(((TimeSec1[i][0] !=0) && (TimeSec1[i][0] !=2359))
               ||((TimeSec1[i][1] !=0) &&(TimeSec1[i][1] !=2359)))
           {
              break;
           }
           ScaleClock = TimeSec1[i][1];                 //回退时钟标尺操作 
         }
       }
      DisplayFlg |= TimeIndexFlg;    
      Key = 0X0E;                                       //进入取消操作处理 
   }
    
   
    {
      
      if((KeyCode[Key] <= 9))                           //数据设定操作
      {
        if((DisplayFlg & TimeIndexFlg) == TimeIndexFlg)
        {
          DisplayFlg &= ~TimeIndexFlg;                  //数据设定条件下,不对时间段进行索引显示
        }
        
         if((DisplayFlg & TimeSection1SetFlg) == TimeSection1SetFlg)
        {                                              //时间段数据输入,停止闪烁
          DisplayFlg &= ~DShrinkFlg;
          DisplayFlg &= ~DShrSetFlg; 
          Counter++;
          if(Counter >=5)
            Counter = 0;
        }
        else if((DisplayFlg & TimeSection2SetFlg) == TimeSection2SetFlg)
        {                                             //时间段数据输入,停止闪烁 
          DisplayFlg &= ~DShrinkFlg;
          DisplayFlg &= ~DShrSetFlg; 
          Counter++;
          if(Counter >=5)
            Counter = 0;
        }
        
        ConvertCode =ConvertCode*10 + KeyCode[Key];
         if(((DisplayFlg & ClockSetFlg) == ClockSetFlg)
            ||((DisplayFlg & TimeSection2SetFlg) ==TimeSection2SetFlg)
            ||((DisplayFlg & TimeSection1SetFlg) ==TimeSection1SetFlg))
         {
           if(ConvertCode >240)                       //校验时间数据正确性
             if((ConvertCode >= 2400) ||(ConvertCode %100) >= 60)
             {
               ConvertCode =0;
               Counter = 0;
             }
         }
         else if((DisplayFlg & AddressSetFlg) == AddressSetFlg)
         {
           if(ConvertCode > 52)                      //校验地址数据的正确性
             ConvertCode = 0;
         }
         else
         {
           if(ConvertCode > 9999)                   //校验其他数据的正确性 
           {
             ConvertCode =0;
           }
         }
         
        
         
        if((DisplayFlg & PlanSetFlg) == PlanSetFlg)  //转化当前数据为显示数据
        {
          for(i=0; i<8; i++)
          {
            DisplayKeyCode[i] =LedCode[10];
          }
          temp1 =ConvertCode %10;
          DisplayKeyCode[8] =LedCode[temp1];
          temp1 =(ConvertCode/10)%10;
          DisplayKeyCode[9] =LedCode[temp1];
          temp1 =(ConvertCode/100)%10;
          DisplayKeyCode[10] =LedCode[temp1];
          temp1 =(ConvertCode/1000)%10;
          DisplayKeyCode[11] =LedCode[temp1];
        }
        
        if((DisplayFlg & NumSetFlg) == NumSetFlg)
        {
          
            for(i=0; i<8; i++)
            {
              DisplayKeyCode[i] =LedCode[10];
            }
            temp1 =ConvertCode %10;
            DisplayKeyCode[8] =LedCode[temp1];
            temp1 =(ConvertCode/10)%10;
            DisplayKeyCode[9] =LedCode[temp1];
            temp1 =(ConvertCode/100)%10;
            DisplayKeyCode[10] =LedCode[temp1];
            temp1 =(ConvertCode/1000)%10;
            DisplayKeyCode[11] =LedCode[temp1];
            if((DisplayFlg & NumSetFlg) == NumSetFlg)
            {
              DisplayKeyCode[9] += 0X80;     
            }
        }
        
         if((DisplayFlg & ClockSetFlg) == ClockSetFlg)
         {
           for(i=0; i<8; i++)
         {
            DisplayKeyCode[i] =LedCode[10];
         }
          temp1 =ConvertCode %10;
          DisplayKeyCode[8] =LedCode[temp1];
          temp1 =(ConvertCode/10)%10;
          DisplayKeyCode[9] =LedCode[temp1];
          temp1 =(ConvertCode/100)%10;
          DisplayKeyCode[10] =LedCode[temp1];
          temp1 =(ConvertCode/1000)%10;
          DisplayKeyCode[11] =LedCode[temp1];
         }
         
          if((DisplayFlg & AddressSetFlg) == AddressSetFlg)
         {
           for(i=0; i<8; i++)
           {
             DisplayKeyCode[i] =LedCode[10];
           }
          temp1 =ConvertCode %10;
          DisplayKeyCode[8] =LedCode[temp1];
          temp1 =(ConvertCode/10)%10;
          DisplayKeyCode[9] =LedCode[temp1];
          temp1 =(ConvertCode/100)%10;
          DisplayKeyCode[10] =LedCode[temp1];
          temp1 =(ConvertCode/1000)%10;
          DisplayKeyCode[11] =LedCode[temp1];
        }
 
         TimerCount =0;
         DisplayFlg &= ~FirstFlg;           
         DisplayFlg &= ~StartShrinkFlg;
      }
    }

⌨️ 快捷键说明

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