flame0510 发表于 2010-12-16 10:45:30

STC12C5608AD程序求助(进入某一段功能程序后,触摸按键失效,遥控可以正常工作)

控制一个触摸加遥控的LED灯   触摸芯片使用的是合泰的BS804B四键触摸,遥控是使用单片机软件解码。 触摸按键设为开/关亮度+亮度-变色/定色 。现在的问题是一般情况下触摸按键都 可以有效的控制,   当我进入变色程序后,触摸按键失效,但是遥控器可以正常控制。
    程序如下(其中一些我省略了,免得太多 看起来累):
触摸控制程序:
                      if(KEY1==0)         //开关
                               {
                                      delay(5000);
                                     if(KEY1==1)
                                       {
                                          k_test=1;
                                             k_code=0x28; // k_num=1;
                                       }
                             }       
                                       
                     if(KEY4==0)          //变色定色
                          {
                                  delay(5000);
                                     if(KEY4==1)
                                       {
                                       k_test=1;
                                             k_code=0x20;
                                          }
                        }
遥控加触摸的控制:
                          if ((IrTest())||(k_test==1)) {                                                                                          //(IrTest())||
                  if(IrTest())
                        {cm_code=IrGetcode();}
                        if(k_test==1)
                        {
                             cm_code=k_code;
                               k_code=0;
                               k_test=0;
                        }
                        change=1;
                       
                        switch (cm_code) {
//-------------------1st line-----------------
                case 0x28:   //开/关
                       if (state==pow_off)
                              {
                                sel_color=Byte_Read (0x2800)+0X100*Byte_Read (0x2A00);          
                                if (sel_color>512)
                                sel_color=200;       
                                grade=Byte_Read (0x2C00);
                                if (grade>8)
                                grade=8;
                                state=pow_on;
                                EN=1;
                                 }
                        else
                                {
                               state=pow_off;
                               EN=0;
                                for (i=0;i<3;i++) rgb=0;
                                delay (5000);
                                Sector_Erase (0x2800);
                                Byte_Program ((UINT8) (sel_color),0x2800);
                                Sector_Erase (0x2A00);
                                Byte_Program ((UINT8) (sel_color>>8),0x2A00);
                                Sector_Erase (0x2C00);
                                Byte_Program (grade,0x2C00);
                                }
                                break;       
                         case 0x20:        //变色定色
                        if (state!=pow_off)
                             {
                                 if (state==pow_on)
                                       {
                                          state=flash;
                                       }
                                else
                                        {
                                        state=pow_on;
                                                  
                                        }
                             }              
                                        break;       
                     }
            case----中间省略了一些其他的

            switch (state) {
                case smooth:
                        sel_color=(++sel_color)%512;
                        change=1;       
                        for (i=0;i<speed;i++)
                                delay (50000);       
                        break;
                case flash:
                        sel_color=sel_color+0x21;
                        sel_color=sel_color%512;
                        change=1;
                        state=flash;
                        for (i=0;i<speed;i++)
                                delay (30000);       
                        break;
                default :
                        break;
                }
                if (change && state) {
                        for (i=0;i<3;i++)
                                rgb=(UINT8) ((color)* (grade/8.0));
                }

flame0510 发表于 2010-12-16 10:48:30

之前我的触摸程序和遥控程序是分开写了,一直有这个问题,我就把触摸程序合在遥控程序里了,   在程序里就是当state==flash时,我的触摸控制就失效了,而遥控还可以正常进行。
    请各位帮忙看看,都困扰了我两个星期了

flame0510 发表于 2010-12-16 17:21:28

能不能麻烦各位帮我看看
页: [1]
查看完整版本: STC12C5608AD程序求助(进入某一段功能程序后,触摸按键失效,遥控可以正常工作)