共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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |