ba_wang_mao 发表于 2010-12-1 11:03:48

请教:ucos/ii中,指示灯(熄灭、点亮、闪烁)三种状态,具体该如何实现?

1、指示灯可能有三种状态

       状态1: 指示灯一直熄灭   (例如:压力 < 10MPa 时,指示灯一直熄灭)
       状态2: 指示灯一直闪烁   (例如:压力 > 50MPa 时,指示灯一直闪烁)
       状态3: 指示灯一直点亮   (例如:10MPa < 压力 < 50MPa 时,指示灯一直点亮)



   一般的程序中对于指示灯闪烁是如下解决的:
            (1)、 创建一个任务 ,首先点亮指示灯
            (2)、 然后延时50ms,
            (3)、 然后熄灭指示灯
            (4)、 然后延时50ms,


       2、但是对于这种“多状态”的指示灯,如何用代码实现?

       3、在实际应用中,可能有很多这种“多状态”指示灯,难道要在同一个任务中实现吗?

ba_wang_mao 发表于 2010-12-6 16:59:01

INT8U ledN_status;

task_led()
   {

       while (1)
       {
            // 指示灯1有三种状态
             for(i=0;i<LedNum;i++)
            {
             switch (ledN_status)
             {
                  case 0:         //状态1 = 熄灭
                      LED_OFF();// 指示灯熄灭
                      break;
                  case 1:         //状态2 = 指示灯常亮
                      LED_ON();// 指示灯点亮
                      break;
                  case 2:         //状态3 = 指示灯闪烁
                      LED_ON();// 指示灯点亮
                      延时50ms;
                      LED_OFF();// 指示灯熄灭
                      延时50ms;
                      break;
                }
            }
                延时50ms;
         }

   }

   请指教,是否可以实现要求的功能。

chenfu 发表于 2010-12-10 15:40:41

case 2:         //状态3 = 指示灯闪烁
                      LED_ON();// 指示灯点亮   
                      延时50ms;   
                      LED_OFF();// 指示灯熄灭   
                     //延时50ms;   /* 这个删除可以实现*/
                      break;
页: [1]
查看完整版本: 请教:ucos/ii中,指示灯(熄灭、点亮、闪烁)三种状态,具体该如何实现?