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

📄 main.c

📁 用单片机实现(载波监听/冲突检测)的功能
💻 C
📖 第 1 页 / 共 5 页
字号:
        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;
      }
    }
  }
  
  if((Key == ENT)  &&((DisplayFlg & ErrFlg) !=ErrFlg))                                                      //确认按键
  {
    if((Flag & ResetFlg) ==ResetFlg)                             //确认键处理
    {
      if(((DisplayFlg & NumSetFlg) == NumSetFlg) && (ConvertCode > 0))
      {                                                          //工数设定确认
#ifdef _Project1
        Target =0;
#else 
#ifdef _Project2
        Target = Target;
#endif
#endif
        Real =0;
        Number = ConvertCode;
      }
      else if(((DisplayFlg & PlanSetFlg) == PlanSetFlg) && (ConvertCode > 0))
        Plan = ConvertCode;                                     //计划设定确认
      else  if(((DisplayFlg & ClockSetFlg) == ClockSetFlg) && (ConvertCode > 0))
      {                                                         //时钟设定确认
        Hour = ConvertCode/100;
        Min  = ConvertCode%100;
        Second =0;
        ClockCount=0;
        CounterForNumber=0;
      }
      else if(((DisplayFlg & AddressSetFlg) == AddressSetFlg) && (ConvertCode > 0))
      {                                                         //地址设定确认
        SelfAddress = ConvertCode;
      }
    }
    
    if((DisplayFlg & TimeSection1SetFlg) == TimeSection1SetFlg)
    {                                                          //时间段的数据组校验处理
      if(((DisplayFlg & CheckTimeFlg) ==CheckTimeFlg) 
         && ((DisplayFlg & TimeFirstFlg) == TimeFirstFlg))
      {
        TimeSectionIndex = SearchIndex*2+1;
        DisplayFlg &= ~TimeFirstFlg;
      }
      else
        TimeSectionIndex++;
      if(TimeSectionIndex >50)
      {
        DisplayFlg &= ~TimeSection1SetFlg;
      }
      else
      {
        SecIndex = (TimeSectionIndex-1)/2;                      //时间段索引
        TimeIndex = (TimeSectionIndex+1)%2;                     //开始、结束时间索引
        {
          
          {
            if(TimeIndex ==0)
            {
              DisplayFlg &= ~DShrinkFlg;
            }

⌨️ 快捷键说明

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