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));
} 之前我的触摸程序和遥控程序是分开写了,一直有这个问题,我就把触摸程序合在遥控程序里了, 在程序里就是当state==flash时,我的触摸控制就失效了,而遥控还可以正常进行。
请各位帮忙看看,都困扰了我两个星期了 能不能麻烦各位帮我看看
页:
[1]