共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 |