1T单片机红外解码 大神们求助啊 急用!
时间:10-02
整理:3721RD
点击:
本人是小白 原来用51单片机做红外接收 中断接收 程序如下 就可以
现在用的stc的11f05e 1T的单片机这个程序就不行了 我知道是延时的问题 但不知道怎么改 试了好多程序都不行
谁给我一个中断的或帮我把下面的改一下 急用啊 求助!
void TBB() interrupt 2
//外部中断1,调节++/--
{
// uchar sw,gw=0,hc,dc; //直接如数数字时的十位,个位,和中间量
uint
cnt;
uchar i;
EX1 = 0;
cnt = 0;
while(!IR) cnt++; //记录引导码时间
if(cnt < 1000){EX1=1;return;} //9ms的计数值(12MHz:1000< cnt <1500)
cnt = 0;
while(IR) if(cnt++ > 400){EX1=1;return;} //防卡死,超时保护(12MHz:
> 300)
if(cnt < 200){EX1=1;return;} //(12MHz不分频: <260)
for(i=0;
i<32; i++) //读取32位位码
{
cnt = 0;
while(!IR);
while(IR) if(cnt++
> 200){EX1=1;return;} //超时保护(12MHz:>=200)
N[i/8] >>=
1;
if(cnt>60) N[i/8] |= 0x80; //0和1的计数界线(12MHz:< 109)
}
if(N[0]
== ~N[1] && N[2] == ~N[3]) //校验识别码,操作码
{
sz=N[2];
}
现在用的stc的11f05e 1T的单片机这个程序就不行了 我知道是延时的问题 但不知道怎么改 试了好多程序都不行
谁给我一个中断的或帮我把下面的改一下 急用啊 求助!
void TBB() interrupt 2
//外部中断1,调节++/--
{
// uchar sw,gw=0,hc,dc; //直接如数数字时的十位,个位,和中间量
uint
cnt;
uchar i;
EX1 = 0;
cnt = 0;
while(!IR) cnt++; //记录引导码时间
if(cnt < 1000){EX1=1;return;} //9ms的计数值(12MHz:1000< cnt <1500)
cnt = 0;
while(IR) if(cnt++ > 400){EX1=1;return;} //防卡死,超时保护(12MHz:
> 300)
if(cnt < 200){EX1=1;return;} //(12MHz不分频: <260)
for(i=0;
i<32; i++) //读取32位位码
{
cnt = 0;
while(!IR);
while(IR) if(cnt++
> 200){EX1=1;return;} //超时保护(12MHz:>=200)
N[i/8] >>=
1;
if(cnt>60) N[i/8] |= 0x80; //0和1的计数界线(12MHz:< 109)
}
if(N[0]
== ~N[1] && N[2] == ~N[3]) //校验识别码,操作码
{
sz=N[2];
}
木人啊