共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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |