TL0=0xE6; //設(shè)定時(shí)值為38K 也就是每隔26us中斷一次
count++;
if (flag==1)
{
OP=~OP;
}
else
{
OP = 0;
}
P3_4 = OP;
}
void SendIRdata(char p_irdata)
{
int i;
char irdata=p_irdata;
//發(fā)送9ms的起始碼
endcount=223;
flag=1;
count=0;
do{}while(count
//發(fā)送4.5ms的結(jié)果碼
endcount=117
flag=0;
count=0;
do{}while(count
//發(fā)送十六位地址的前八位
irdata=iraddr1;
for(i=0;i<8;i++)
{
//先發(fā)送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平) irdata=irdata>>1; //發(fā)送十六位地址的后八位 if(irdata-(irdata/2)*2) irdata=irdata>>1; //發(fā)送八位數(shù)據(jù) if(irdata-(irdata/2)*2) irdata=irdata>>1; //發(fā)送八位數(shù)據(jù)的反碼 if(irdata-(irdata/2)*2) irdata=irdata>>1; endcount=10; void delay()
endcount=10;
flag=1;
count=0;
do{}while(count
{
endcount=41; //1為寬的高電平
}
else
{
endcount=15; //0為窄的高電平
}
flag=0;
count=0;
do{}while(count
}
irdata=iraddr2;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count
}
irdata=p_irdata;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count
}
irdata=~p_irdata;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count
}
flag=1;
count=0;
do{}while(count
}
{
int i,j;
for(i=0;i<400;i++)
{
for(j=0;j<100;j++)
{
}
}
}
[1]





