标题:
关于51单片机红外接收高速解码问题
[打印本页]
作者:
kiki900330
时间:
2019-9-25 16:10
标题:
关于51单片机红外接收高速解码问题
本帖最后由 kiki900330 于 2019-9-25 16:17 编辑
/*****红外接收中断*****/
使用24MHz晶振,单片机STC8A4KS2A12
条件:
1;100ms为1帧的红外脉冲,1帧总共有5个脉冲,1个脉冲持续20uS,用下降沿捕获
2;第1个下降沿与第2个下降沿之间宽度记为a,第2个下降沿与第3个下降沿之间宽度记为b,第3个下降沿与第4个
下降沿之间宽度记为c,现在要求只判断a与b之间的关系
3;任何时候,a<=b,a=50uS,并且b最大不超过100uS,b=50uS到b=100uS两者之间变化
问题:
如下,我不知道程序哪里出问题了,LED指示灯没有变化(示波器测量到只有一种状态)
判断程序:
void PCA_Isr() interrupt 7
{
if(CF)
{
CF=0;
cnt++; //PCA计时溢出次数+1
}
if(CCF1)
{
CCF1=0;
count0=count1; //备份上一次的捕获值
((unsigned char*)&count1)[3]=CCAP0L;
((unsigned char*)&count1)[2]=CCAP0H;
((unsigned char*)&count1)[1]=cnt;
((unsigned char*)&count1)[0]=0;
}
switch(a)
{
case 2:if(count1>count0+count0/2) //判断a和b的关系
{
LED=0;
}
else
{
LED=1;
}break;
case 4:count1=count0=a=b=0;break; //每一帧接收完成后,所有中间变量初始化
default:break;
}
a++;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1