3个回答
展开全部
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);
}
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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询