标题:
51单片机的红外,接受到正确值蜂鸣器响,输出一串字符,正常连续按压有时不响应
[打印本页]
作者:
祥祥俱乐部
时间:
2018-8-31 00:44
标题:
51单片机的红外,接受到正确值蜂鸣器响,输出一串字符,正常连续按压有时不响应
用中断做了一个红外遥控,接收对应IR值时输出一串字符,且每次IR接受值正确时响蜂鸣器。
问题:
正常连续按下按键后,有时候单片机没有及时响应。求教下是为何?
单一的红外接受和数码管显示好像没有发现有这种现象,
void IR_Recevie()
{
static uchar i,j,high_t;
uint err_time;
high_t=0;
if(IR_Pin==LOW)
{
err_time=10;
while((IR_Pin==LOW)&&(err_time>0))
{
Delay8us(125); //延时1ms
err_time--;
}
if(IR_Pin==HIGH)
{
err_time=7;
while((IR_Pin==HIGH)&&(err_time>0))
{
Delay8us(100); //延时0.8ms
err_time--;
}
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
err_time=2;
while((IR_Pin==LOW)&&(err_time>0))
{
Delay8us(40); //延时0.32ms
err_time--;
}
err_time=40;
while((IR_Pin==HIGH)&&(err_time>0))
{
Delay8us(20); //延时0.16ms
err_time--;
high_t++;
if(high_t>20)
return;
}
ir_code[i]=ir_code[i]>>1;
if(high_t>=7)
{
ir_code[i]|=0x80;
}
high_t=0;
}
}
}
if(ir_code[2]!=~ir_code[3])
{
return;
}
else
{
Beep_Test();
}
}
}
void IR_Code_Funtion()
{
static uchar i,disp[7]={"womenya"},ir_code_temp;
ir_code_temp=ir_code[2];
ir_code[2]=ZERO;
switch(ir_code_temp)
{
case POWER_KEY:
for(i=0;i<7;i++)
LCD_Write_Data(disp[i]);
break;
case MODE_KEY:
break;
case MUTE_KEY:
break;
case PASE_START_KEY:
break;
case UP_KEY:
break;
case DOWN_KEY:
break;
case EQ_KEY:
break;
case VOL_DOWN:
break;
case VOL_UP:
break;
case RPT_KEY:
LCD_Write_Command(0x01);
break;
case U_SD_KEY:
break;
case ZERO_KEY:
break;
case ONE_KEY:
break;
case TWO_KEY:
break;
case THREE_KEY:
break;
case FOUR_KEY:
break;
case FIVE_KEY:
break;
case SIX_KEY:
break;
case SEVEN_KEY:
break;
case ENGITH_KEY:
break;
case NINE_KEY:
break;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1