2346|4

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

红外遥控问题 [复制链接]

我写的这个程序,可是每次time的值应该在5060us左右,现在读出来很小,是什么原因?用的是sc6122的芯片

#include
#include
void init();
void delay(unsigned char j);
   unsigned char  timeH,timeL,j;
   unsigned int  time,ij=0;//定义2个下降沿的时间
   static  unsigned int  k=0;


//当第一个下降沿来的时候就是9ms高转为4.5ms低的时候,开始让T0计时,当第二个下降沿来的时候就是0.56ms高转为低的时候,停止T0,保存TH0,TL0的数据到time,读出time的时间

void ISR_INT0() interrupt 0 //外部中断0服务程序
  {
      ++ij;
     if(ij==1)
     {
     TR0=1;//定时器0选通工作
     }
   else if(ij>1)
     {
     TR0=0;//定时器0关闭工作
     timeH=TH0;
     timeL=TL0;
     time=timeH;
     time=time<<8;
     time=time|timeL; //将定时的值存进time
     }
  }
   void main()
{
   
    if(k==0)
   { init();}
}

//设置int0下降沿触发,等下降沿来的时候,开始让T0计时
   void init()
{
   TMOD=0x01; //定时器0, 工作方式1, 16位计数
   TCON=0x01; //INT0下降沿触发 , INT1低电平触发
   TH0=0x00;  //初始化定时器0
   TL0=0x00;
   EA=1;    //开全中断
   ET0=1;   //开放T0中断
   ET1=1;   //开放T0中断
   EX0=1;   //开放INT0
   ++k;
}

最新回复

注意: 1.红外接收器的波形是反向的, 2.计数器有没有溢出,你的计时长度是13.5ms。 3.你的程序只能计第一个下降源的长度。  详情 回复 发表于 2007-7-5 14:53
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
遥控接收器接收到的信号一般都有抖动,你有防抖动电路吗?也可以软件防抖动!
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
第一、下降沿中断后最好延迟几个微秒再看一下端口输入电平是否是低电平,防止输入信号有毛刺。
第二、红外接收易受其他光源干扰,象白炽灯等,接收头放在远离这些光源旁。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

4
 
在中断中读取数据前加一个断点。外部用示波器观测输入中断信号。进行对比应该很容易找到问题。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
注意:
1.红外接收器的波形是反向的,
2.计数器有没有溢出,你的计时长度是13.5ms。
3.你的程序只能计第一个下降源的长度。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表