本帖最后由 liwei12400 于 2013-9-25 09:54 编辑
在网上看了很多资料,因为手头上没有现成的硬件,所以想让大家帮看下写程序的思路是不是正确,
另外,看看能不能把解码的数据存到数组里。小白在此谢过啦
#include<reg52.h>
sbit IR=P3^2;
unsigned char str[4];
void delay100us(unsigned char t)
{
unsigned char a,b;
for(b=t;b>0;b--)
for(a=47;a>0;a--);
}
void mian()
{
IT0=1;
EX0=1;
EA=1;
while(1)
{
}
}
void int0() interrupt 0 //下降沿触发
{
unsigned char i,j,us,temp;
EX0=0;
if(IR==1) //排除干扰造成的中断触发
{
EX0=1;
return;
}
while(!IR);//等待引导码4.5ms低电平
for(i=0;i<4;i++) //4位数据依次是低8位地址码,高8位地址码,数据码,数据反码 ,先接收到的是低位
{
for(j=0,temp=0,us=0;j<8;j++)
{
delay100us(8);//跳过0,1开始的0.565ms的高电平
while(!IR)
{
us++;
}//低电平持续的时间,从而判断0,1
if(us>400)
temp=temp|0x80;
temp=temp>>1;
}
str=temp;//这里就存在下标为i的数组里。帖子里【】打不出来
}
EX0=1;
}
|