这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 请问咱们论坛有没有现成的测量红外脉宽的程序?虚心请教,谢谢

共2条 1/1 1 跳转至

请问咱们论坛有没有现成的测量红外脉宽的程序?虚心请教,谢谢

院士
2006-09-17 18:14:16     打赏
请问咱们论坛有没有现成的测量红外脉宽的程序?虚心请教,谢谢



关键词: 请问     咱们     论坛     有没有     现成     测量     红外     脉宽         

院士
2006-12-22 22:43:00     打赏
2楼
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,可以加我么?这样我有什么问题就可以及时向你请教,多谢帮助,我会仔细阅读程序的

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]