发新帖我要提问
12
返回列表
打印

昨晚老大出个题目,让10分钟做完,结果我想了半个小时……

[复制链接]
楼主: ytfdhb
手机看帖
扫描二维码
随时随地手机跟帖
21
林志财| | 2013-9-6 17:18 | 只看该作者 回帖奖励 |倒序浏览
时间问题,相信LZ会搞出来的

使用特权

评论回复
22
yklstudent| | 2013-9-6 23:16 | 只看该作者
本帖最后由 yklstudent 于 2013-9-6 23:18 编辑

不知道有没有理解楼主的意思
我就是先开的灯  关也是先关
后开的灯 也是后关

typedef struct
{
INT8U led_state0:1;
INT8U led_state1:1;
INT8U led_state2:1;
INT8U led_state3:1;
INT8U led_state4:1;
INT8U led_state5:1;
INT8U led_state6:1;
INT8U led_state7:1;
}LED_BIT;
typedef union
{
LED_BIT led_bit;
INT8U led_state;
}LED_STATE;
typedef struct
{
INT8U left_count;
INT8U right_count;
INT8U length;
LED_STATE led_value;
}FUN_STATE;

void Task1(void)
{
switch ( Key_Value )
{
  case KV_UP:
  {
      fun_state.led_value.led_bit.led_state0 ^= 1;
   if ( !fun_state.led_value.led_bit.led_state0 )
   {
    fun_state.led_value.led_state &= 0xF0;
    fun_state.left_count = 0;
    fun_state.right_count = 0;
   }
   break;
  }
  case KV_DN:
  {
   if ( fun_state.led_value.led_bit.led_state0 )
   {
    if( (fun_state.left_count < 3) )
    {
     fun_state.length ++;
     fun_state.left_count ++;
     fun_state.led_value.led_state |= _BV(fun_state.left_count);
     if ( fun_state.left_count == 3 )
     {
      fun_state.left_count = 0;
     }
    }
   }
   break;
  }
  case KV_LF:
  {
   if ( (fun_state.led_value.led_bit.led_state0) && (fun_state.length!=0) )
   {
    if( (fun_state.right_count <= fun_state.length+1) )
    {
     if (fun_state.length!=0)
      fun_state.length --;
     fun_state.right_count ++;
     fun_state.led_value.led_state &= ~_BV(fun_state.right_count);
     if ( fun_state.right_count == 3 )
     {
      fun_state.right_count = 0;
     }
    }
   }
   break;
  }
  case KV_MD:
  {
   break;
  }
  default:
   break;
}
Key_Value = KV_NO;
}

void Task2(void)
{
LedPort = fun_state.led_value.led_state;
}

使用特权

评论回复
23
bboybl| | 2013-9-7 01:00 | 只看该作者
看不懂 四个按键 四个灯?明明是三个按键????

使用特权

评论回复
24
xiaox314| | 2013-9-11 17:06 | 只看该作者
一个标志位(开关),2个圆圈就能搞定吧(开一个,关一个)!

使用特权

评论回复
25
ytfdhb|  楼主 | 2013-9-20 13:34 | 只看该作者
bboybl 发表于 2013-9-7 01:00
看不懂 四个按键 四个灯?明明是三个按键????

不好意思,我把poweroff键一块整合成开关键了

使用特权

评论回复
26
zwz7219| | 2013-9-21 14:26 | 只看该作者
建立一个结构数组,数组中每个元素代表每个灯,每个元素中包含灯的点亮状态和点亮时间计数器,按开灯键时,检测没有打开的灯的计数器,计数值最小的优先开,按关灯键时,同样检测计数器,计数值最大的优先关。

当然,在中断中,要对点亮的灯的计数器进行增量计数。

注意计数周期及溢出问题。

使用特权

评论回复
27
huazhongwang| | 2013-9-21 14:32 | 只看该作者
围观,学习了,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则