电路如图,遥控器和接收头是分开单独买的,发码后,我测了下OUT端电压从5V下降到4.3V左右就又回到5V,我想问一下这样工作正常不?我是没有解码成功,但是我的代码延时都是非常精确的。资料上工作时输出端是5——0V。是不是这个接收头有问题,还是我的电路有问题,还是代码有问题?
void int0(void) interrupt 0 using 2
{
EX0=0; //关外中断
for(k=0;k<10;k++)
{
Delay0_9ms();
if (IRsignal==1) //如果0.9ms后IRsignal=1,说明不是引导码
{k=10;break;}
else if(k==9) //如果持续了10×0.9ms=9ms的低电平,说明是引导码
{
while(IRsignal==0);
Delay4_5ms(); //跳过持续4.5ms的高电平
for(i=0;i<4;i++) //分别读取4个字节
{
for(j=1;j<=8;j++) //每个字节8个bit的判断
{
while(IRsignal==0); //等待上升沿/
Delay0_9ms(); //从上升沿那一时刻开始延时0.9ms,再判断IRsignal
if(IRsignal==1) //如果IRsignal是"1",则向右移入一位"1"
{
Delay1ms();
CodeTemp=CodeTemp|0x80;
if(j<8) CodeTemp=CodeTemp>>1;
}
else
if(j<8) CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
}
IRcode=CodeTemp;
CodeTemp=0;
}
}
}
if (IRcode[0]!=0x00) //检验用户码,不等则清空解码数据
{
IRcode[4]=0;
EX0=1;
}
EX0=1;
}
|