#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar shu,panduan,bitnum,irjieshou,irshuju,irjiemaOK;
uchar irnum[33];
uchar irjm[4];
void delay(uint z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void int0()
{
EA=1;
IT0=1;
EX0=1;
}
void timer0()
{
TMOD=0x02;
TH0=TL0=0;
EA=1;
ET0=1;
TR0=1;
}
void irjiema()//红外解码部分
{
uchar k=1,j,i;
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
irshuju=irshuju>>1;
if(irnum[k]>6)
{
irshuju=irshuju | 0x80;
}
k++;
}
irjm[j]=irshuju;
}
irjiemaOK=1;
}
void display()//显示部分
{
P2=irjm[3];
irjiemaOK=0;
}
void main()
{
timer0();
int0();
while(1)
{
if(irjieshou)
{
irjieshou=0;
irjiema();
}
if(irjiemaOK)
{
display();
}
}
}
void tamer00() interrupt 1
{
shu++;
}
void int00() interrupt 0//中断接收部分
{
if(panduan)
{
if(shu>32)
{
bitnum=0;
}
irnum[bitnum]=shu;
shu=0;
bitnum++;
if(bitnum==33)
{
bitnum=0;
irjieshou=1;
}
}
else
{
panduan=1;
shu=0;
}
}
各位高手看下电路和程序有错没。 |