11.0592M,产生38kHz脉冲将有误差。
11059200/12=921600/38000=24.3=23
static void timer0_isr(void) interrupt 1 using 0 //中断函数
{
TR0=0;
TL0=0xe9;
TH0=0xff;
TR0=1;
timer0_tick++;
if(timer0_tick++==23)
{
timer0_tick=0;
}
if (timer0_tick==0)
{
P3_7=~P3_7;
}
}
static void timer0_initialize(void)//中断初始化
{
EA=0;
timer0_tick=0;
TR0=0;
TMOD=0x01;
TL0=0xe9;
TH0=0xff;
PT0=0;
ET0=1;
TR0=1;
EA=1;
}
void main(void)
{
timer0_initialize();
while(1);
}
你这个适用于一体化红外收发二极管把?可以用定时器定时26us也可以直接用for循环实现
用定时器就可以产生38k的方波,比如
#include
sbit
pluse=p1^0;
void
t0isr()
interrupt
1
{
pluse=~pluse;
}
main()
{
tmod=0x02;
th0=256-13;
tl0=256-13;
et0=1;
tr0=1;
ea=1;
while(1);
}