一种检测LED闪烁状态的方法

//date:2019-9-30 16:08:29
//author:duxinfeng
//function:A method to scan led blink which showing the network status of GPRS
#define u8 unsigned char
#define max_cnt 102
#define min_cnt 8
u8 high_cnt=0;
u8 high_sta=0;
u8 high_buf[5];

u8 led_blink_scan()
{
  u8 i=0;
  if( LED_PIN )
  {
    if( high_cnt>max_cnt )
    {
      high_cnt=0;
    }
    high_cnt++;
  }
  else
  {
    if( high_cnt>max_cnt ) { return 0xf1; }
    else if( high_cnt<max_cnt ) { return 0xf2; }
    else 
    {
      for( i=0;i<4;i++)
      {
        high_buf[4-i]=high_buf[3-i];
      }
      high_buf[0]=high_cnt;
      high_sta=high_buf[0]*0.6+
               high_buf[1]*0.1+
               high_buf[2]*0.1+
               high_buf[3]*0.1+
               high_buf[4]*0.1;
      if( high_sta<min_cnt*2 )
      {
        return 0x01;
        //this blink is high 100ms
      }
      else if( (high_sta<(max_cnt/2+20))&&( high_sta>(max_cnt/2-20) ) )
      {
        return 0x05;
        //this blink is high 500ms
      }
      else if( high_sta>(max_cnt/2+30) )
      {
        return 0x0A;
        //this blink is high 1000ms
      }
    }
  }
  return 0x00;
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页