共2条
1/1 1 跳转至页
请问咱们论坛有没有现成的测量红外脉宽的程序?虚心请教,谢谢
问
答 1:
我有,刚做的,还没调,代替pt2272#include <REG2051.H>
unsigned int hongwaibuff;
unsigned int jishi;
bit b_succ=0;
bit b_tou=0;
bit b_maichong0;
bit b_maichong1;
bit b_maichong2;
bit b_maichong3;
/////////////////////////////////
void yunxufou(void) //接受允许判断
{
while(b_tou==0)
{
if(P3^2==0)
{TR0=1;
if(TH0>0X10); //接受脚为长时间低电平否
b_tou=1;
TR0=0;
TL0=0;
TH0=0;
}
else
{
b_tou=0;
TR0=0;
TL0=0;
TH0=0;
}
}
}
///////////////////////////////////////保存脉冲计数
void jishifuzhi (void)
{ TR0=1;
jishi=TH0;
jishi<<=8;
jishi|=TL0;
}
///////////////////////////////////////
void weijieshou(void) //接受四个脉冲变化
{
while(P3^2==1)
{
jishifuzhi();
if(jishi>450)
{
b_tou=0,TR0=0, TL0=0, TH0=0;
break;
} //时间过长退出
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong0=0;
else
b_maichong0=1; //置第一个脉冲位
while(P3^2==0)
{
jishifuzhi(); //保存接受时间
if(jishi>450)
{
b_tou=0,TR0=0,TL0=0,TH0=0;
break;
} //时间过长退出
}
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong1=1;
else
b_maichong1=0; //置第二个脉冲位
while(P3^2==1)
{
jishifuzhi(); //保存接受时间
if(jishi>450)
{
b_tou=0,TR0=0, TL0=0,TH0=0;
break;
} //时间过长退出
}
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong2=0;
else
b_maichong2=1; //置第三个脉冲位
while( P3^2==1 )
{
jishifuzhi(); //保存接受时间
if(jishi>450)
{
b_tou=0,TR0=0,TL0=0,TH0=0;
break;
} //时间过长退出
}
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong3=1;
else
b_maichong3=0;
}
}
//////////////////////////////////////////////
void jieshouma ()
{unsigned char i;
for(i=0;i<12;i++)
{ weijieshou();
if (b_tou==1)
{
hongwaibuff|=b_maichong0;
hongwaibuff<<=1;
}
else
{
hongwaibuff=0;
b_succ=0;
break;
}
}
}
//////////////////////////////////////////////
void jima(void)
{
if(b_tou==1)
{
if(P3^2==1)
{
hongwaibuff=0;
jieshouma();
}
}
}
void main(void)
{
INT0=0;
TL0=0;
TH0=0;
TCON=0X00;
TMOD=0X09;
b_tou=0;
while(b_tou==0)
{ if (P3^2==0)
{
TR0=1;
if (P3_2==0)
{
jishifuzhi();
if(jishi>150)
{
b_tou=1;
TR0=0;
TL0=0;
TH0=0;
}
}
}
}
}
答 2: 感谢! 雪中送炭,太谢谢你了!35836741这是我QQ,可以加我么?这样我有什么问题就可以及时向你请教,多谢帮助,我会仔细阅读程序的
unsigned int hongwaibuff;
unsigned int jishi;
bit b_succ=0;
bit b_tou=0;
bit b_maichong0;
bit b_maichong1;
bit b_maichong2;
bit b_maichong3;
/////////////////////////////////
void yunxufou(void) //接受允许判断
{
while(b_tou==0)
{
if(P3^2==0)
{TR0=1;
if(TH0>0X10); //接受脚为长时间低电平否
b_tou=1;
TR0=0;
TL0=0;
TH0=0;
}
else
{
b_tou=0;
TR0=0;
TL0=0;
TH0=0;
}
}
}
///////////////////////////////////////保存脉冲计数
void jishifuzhi (void)
{ TR0=1;
jishi=TH0;
jishi<<=8;
jishi|=TL0;
}
///////////////////////////////////////
void weijieshou(void) //接受四个脉冲变化
{
while(P3^2==1)
{
jishifuzhi();
if(jishi>450)
{
b_tou=0,TR0=0, TL0=0, TH0=0;
break;
} //时间过长退出
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong0=0;
else
b_maichong0=1; //置第一个脉冲位
while(P3^2==0)
{
jishifuzhi(); //保存接受时间
if(jishi>450)
{
b_tou=0,TR0=0,TL0=0,TH0=0;
break;
} //时间过长退出
}
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong1=1;
else
b_maichong1=0; //置第二个脉冲位
while(P3^2==1)
{
jishifuzhi(); //保存接受时间
if(jishi>450)
{
b_tou=0,TR0=0, TL0=0,TH0=0;
break;
} //时间过长退出
}
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong2=0;
else
b_maichong2=1; //置第三个脉冲位
while( P3^2==1 )
{
jishifuzhi(); //保存接受时间
if(jishi>450)
{
b_tou=0,TR0=0,TL0=0,TH0=0;
break;
} //时间过长退出
}
}
if(b_tou==1)
{
TL0=0,TH0=0;
if(jishi<150)
b_maichong3=1;
else
b_maichong3=0;
}
}
//////////////////////////////////////////////
void jieshouma ()
{unsigned char i;
for(i=0;i<12;i++)
{ weijieshou();
if (b_tou==1)
{
hongwaibuff|=b_maichong0;
hongwaibuff<<=1;
}
else
{
hongwaibuff=0;
b_succ=0;
break;
}
}
}
//////////////////////////////////////////////
void jima(void)
{
if(b_tou==1)
{
if(P3^2==1)
{
hongwaibuff=0;
jieshouma();
}
}
}
void main(void)
{
INT0=0;
TL0=0;
TH0=0;
TCON=0X00;
TMOD=0X09;
b_tou=0;
while(b_tou==0)
{ if (P3^2==0)
{
TR0=1;
if (P3_2==0)
{
jishifuzhi();
if(jishi>150)
{
b_tou=1;
TR0=0;
TL0=0;
TH0=0;
}
}
}
}
}
答 2: 感谢! 雪中送炭,太谢谢你了!35836741这是我QQ,可以加我么?这样我有什么问题就可以及时向你请教,多谢帮助,我会仔细阅读程序的
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |