晶振用的12MHZ的,工作于方式1
time0()interrupt 1 //定时器0中断
{
static bit OP=0;
//红外发射管的亮灭
TH0=0xFF; //25ns溢出一次
TL0=0xE7;
count++;
if(IR_flag==1)
{
OP=~OP; //发射
}
else
{
OP = 0; //不发射
}
IR_IN=OP; //IR_IN为发射引脚
}
精度不够可以手动调整,可我用逻辑分析仪读出波形后发现,发射相同时间的红外信号,红外持续的时间不一样,这是怎么回事,
下面是红外发射时间测试程序
time_measure()
{
uint i,endcount;
for(i=0;i<8;i++) //发射8次
{
TR0=0;
endcount=1000; //定时25毫秒
IR_flag=1;
count=0;
TH0=0xFF;
TL0=0xE7;
TR0=1;
while(count<endcount); //等待时间到
TR0=0;
endcount=1000; //不发射时间25毫秒
IR_flag=0;
count=0;
TH0=0xFF;
TL0=0xE7;
TR0=1;
while(count<endcount); //等待
}
TR0=0; //关定时器
}
下面是逻辑分析仪出来的波形
} |