我采用外中断接收遥控器数据,为何接收不到?(见内)硬件:遥控芯片m50462,接收头数据线接INT1脚。
M50462是根据一个脉冲的长短来区分0和1。低电平均为0.26ms,0的高电平为0.79ms,1的高电平为1.84ms.
思路:下降沿到来,进入中断,每次接收一位。接收完16位(第17个下降沿到来)对数据处理。
出现的问题:进入了中断,但是没有接收到数据。请教大侠。
void getbit(void) interrupt 0
{
EX1=0; //关掉外部中断
number=number+1;
count=TH0; //保存上一个脉冲计数值(高位)
TR0=0; //关掉上一个脉冲的计数
TH0=0X00; //重新开始计数
TL0=0X00;
TR0=1; //启动计数器
if (number==1)
{
goto kk; //第一个下降沿到来时只计数,不处理
}
//判断上一个脉冲长度
if (count> 0 && count <6) //"0"值
{
key> > =1;
}
else if (count> 5 && count <11) //"1"值
{
key> > =1;
key=key+0x8000;
}
if (number==17) //一帧的最后一个下降沿,对接收到的数据进行处理
{
//拆分key
keyH=key%0x100; //高8位
keyL=key/0x100; //低8位
buf[0]=0x34;//keyH;
buf[1]=0x45;//keyL;
goto kk;
}
kk: EX1=1; //重新开外部中断
}