单片机红外接收c程序

gongtou00 2008-12-27 08:41:36
网上看到的红外解码程序 小弟有一处疑问

void t0(void) interrupt 0 using 2//外部中断0的函数
{
EA=0;
for(k=0;k<10;k++)
{
ds0_9ms();
if (p32==1) {k=10;break;}
else if(k==9)
{
while(p32==0);//此处循环一直到wile为1,后面为什么还要延时4.5ms
ds4_5ms();
for(i=0;i<4;i++)
{
for(j=1;j<=8;j++)
{
while(p32==0);
ds0_9ms();
if(p32==1)
{ds1ms();
dm=dm|0x80;
if(j<8) dm=dm>>1;
}
else if(j<8)dm=dm>>1;
}
a[i]=dm;
dm=0;
}
for(i=0;i<4;i++)
{
p0=a[i];
ds2s();
}
}
}
p0=0;
EA=1;
}问题见标示处,望达人指点,谢谢
...全文
1011 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kangyonghui 2010-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fly19890114 的回复:]
红外接受的编码有32位,一开始有一引导码,引导码高低电平各4.5ms
[/Quote]不会吧,是高电平9MS,低电平4.5MS
ba_wang_mao 2010-01-06
  • 打赏
  • 举报
回复
我有上疑问:
怎么随便能在中断服务程序中延时呢?应该在主程序中判断分析的呀?
liuyong09 2010-01-06
  • 打赏
  • 举报
回复
学习了
fly19890114 2009-07-28
  • 打赏
  • 举报
回复
红外接受的编码有32位,一开始有一引导码,引导码高低电平各4.5ms
ies_sweet 2009-07-28
  • 打赏
  • 举报
回复
学习,
mark
ren03 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxm_0328 的回复:]
你明白了,我不明白。
[/Quote]
wxm_0328 2008-12-27
  • 打赏
  • 举报
回复
你明白了,我不明白。
waizqfor 2008-12-27
  • 打赏
  • 举报
回复
gongtou00 2008-12-27
  • 打赏
  • 举报
回复
明白了

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧