搜索
bottom↓
回复: 7

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

[复制链接]

出0入0汤圆

发表于 2010-12-1 15:03:08 | 显示全部楼层 |阅读模式
1、指示灯可能有三种状态

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



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

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


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


        请教傻孩子赐教!

出0入0汤圆

发表于 2010-12-1 15:34:59 | 显示全部楼层
让检测压力的task发message。

出0入0汤圆

 楼主| 发表于 2010-12-1 16:37:03 | 显示全部楼层
回复【1楼】marx ●█〓
让检测压力的task发message。
-----------------------------------------------------------------------

   假如:实际工程中有50个指示灯,不可能定义50个任务,分别给每个指示灯发送消息吧!

出0入296汤圆

发表于 2010-12-3 09:51:15 | 显示全部楼层
用一个任务,在这个任务里面写三个状态机,对应三个灯。或者你写一个LED引擎,用一个状态极搞定所有。

出0入0汤圆

 楼主| 发表于 2010-12-3 18:03:06 | 显示全部楼层
1、当这个任务只针对1个指示灯(指示灯1有三种状态),可以如下写代码

   task_led()
   {

       while (1)
       {
            // 指示灯1有三种状态
             switch (led1_status)
             {
                  case 0:         //状态1
                      LED_OFF();  // 指示灯熄灭
                      break;
                  case 1:         //状态2
                      LED_ON();  // 指示灯点亮
                      break;
                  case 2:         //状态3
                      LED_ON();  // 指示灯点亮
                      延时50ms;
                      LED_OFF();  // 指示灯熄灭
                      延时50ms;
                      break;
                }
                延时50ms;
           }

     }


2、  当这个任务针对2个指示灯(指示灯1有三种状态,指示灯2有二种状态),如何写代码?
      请指教!

出0入0汤圆

发表于 2010-12-6 11:35:07 | 显示全部楼层
回复【4楼】ba_wang_mao

  1、当这个任务只针对1个指示灯(指示灯1有三种状态),可以如下写代码
   task_led()
   {
       while (1)
       {
            // 指示灯1有三种状态
             switch (led1_status)
             {
                  case 0:         //状态1
                      led_off();  // 指示灯熄灭
                      break;
                  case 1:         //状态2
                      led_on();  // 指示灯点亮
                      break;
      ......
-----------------------------------------------------------------------

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;
           }

     }

出0入0汤圆

 楼主| 发表于 2010-12-6 16:50:45 | 显示全部楼层
太感谢了!。

出0入0汤圆

 楼主| 发表于 2010-12-6 16:55:34 | 显示全部楼层
INT8U ledN_status[50];

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;  
           }  

     }
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 22:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表