基于attiny13的NEC红外线遥控信号解码程序

发布者:平安心境最新更新时间:2019-10-30 来源: 51hei关键字:attiny13  NEC  红外线遥控  信号解码 手机看文章 扫描二维码
随时随地手机看文章

最近参考了网上的51红外线遥控遥控信号解码程序,编写了基于attiny13的NEC红外线遥控信号解码程序,拿出来给大家共勉,欢迎大家批评指正。程序如下:


#include

#include


#define uchar unsigned char

#define star()  TCCR0B=(1<#define stop()  TCCR0B=0                     //停止定时器  

#define ir_in PB1    //int0引脚定义


volatile uchar ir_flag=0;

volatile uchar ir_da[4];

/****************************************************/

uchar getHtime(void)           

{

  TCNT0=0; 

  star();                        //开始计时

  while (PINB&(1<电平结束

  {

   if (TCNT0>250) break;         //高电平时间太长不合法,退出等待

  }

   stop(); //停止计时     

  

  return TCNT0;

}

/****************************************************/

uchar getLtime(void)           

{

  TCNT0=0; 

  star();                        //开始计时

  while ((PINB&(1<  {

   if (TCNT0>250) break;         //高电平时间太长不合法,退出等待

  }

   stop(); //停止计时     

  

  return TCNT0;

}

/****************************************************/

ISR(INT0_vect)  //外部中断

{

  static uchar step=1;   //用于区分按键码和连续码以执行不同的中断程序

  uchar i,j;

  uchar byt=0;

  uchar time;

if (step)        //刚按下遥控器的按键,执行下面的程序段

{

  time=getLtime(); //接收并判定引导码的 9ms 低电平,

  if((time<152)||(time>171)) //时间判定范围为 8.5~9.5ms,超过此范围则说明为误码,直接退出

    {

GIFR=(1<    return; //结束外部中断程序 

}

  time=getHtime();   //接收并判定引导码的 4.5ms 高电平

   if ((time<71)||(time>89))       //时间判定范围为 4.0~5.0ms,超过此范围则说明为误码,直接退出

   {

  GIFR=(1<    return; //结束外部中断程序   

   }

  for (i=0; i<4; i++)       //循环接收 4 个字节

   {   

    for (j=0; j<8; j++)

    {

    time=getLtime();

if ((time<6)||(time>14))    //时间判定范围为 340~780us,超过此范围则说明为误码,直接退出  

    {

  GIFR=(1<    return; //结束外部中断程序   

    }

    time=getHtime(); 

    if ((time>5)&&(time<15))  byt>>=1;  //时间判定范围为 340~780us,在此范围内说明该 bit 值为 0 

        else if ((time>25)&&(time<35))  //时间判定范围为 1460~1900us,在此范围内说明该 bit 值为 1

    {

    byt>>=1;

    byt|=0x80;

                }

              else 

                {

    GIFR=(1<                return; //结束外部中断程序 

    }  

}

ir_da[i]=byt;

  }

  ir_flag=1; 

   step=0;    //如果按键未松开,下次中断执行连发码处理程序

  GIFR=(1<}


else   //如果是连发码执行下面的程序段

  {

  time=getLtime(); //接收并判定连发码引导码的 9ms 低电平

  if((time<152)||(time>171)) //时间判定范围为 8.5~9.5ms,超过此范围则说明为误码,直接退出

    {

step=1;     //下次中断执行按键处理程序

GIFR=(1<    return; //结束外部中断程序 

}

  time=getHtime();   //接收并判定连发引导码的 2.25ms 高电平

   if ((time<36)||(time>44))       //时间判定范围为 2.0~2.5ms,超过此范围则说明为误码,直接退出

   {

    step=1;     //下次中断执行按键处理程序

  GIFR=(1<    return; //结束外部中断程序   

   }else     //确定为连发码

    {

ir_flag=1; 

    step=0;    //如果按键仍未松开,下次中断继续执行连发码处理程序

    GIFR=(1<}

  }

}

/****************************************************/

int main(void)

{

  PORTB=0xff;  

   MCUCR=(1<  GIMSK=(1<  sei();                 //开全局中断

  while (1)

  {;}

}

attiny13使用内部时钟,电源电压5V时实测1.15MHz左右。编译器为GCC


关键字:attiny13  NEC  红外线遥控  信号解码 引用地址:基于attiny13的NEC红外线遥控信号解码程序

上一篇:avr单片机 Mega16定时器实验报告
下一篇:AVR单片机通过74HC595驱动数码管显示

推荐阅读最新更新时间:2024-11-06 21:07

连接车、人和社会:NEC网络车载智能通信系统构想
1. NEC的生态移动社会构想    在ICT(信息通信技术)行业,会频繁地用到“云”这一名词。目前,云的可能性已经延伸到IT以外的领域。   以移动性为例,出于实现低碳社会这一环保方面的要求,需要能源类云(支持电动汽车、住宅及大楼、系统电源等电力需求的可视化)和交通类云(支持交通流量可视化,缓解交通拥堵)相互作用,建设更方便人们居住的社区,实现有利于环境的“生态移动社会” 。   NEC将通过云技术为实现低碳社会作出贡献。   移动性的典型要数汽车。NEC认为,今后在汽车相关领域,“网络化”将成为一个重要的关键词。首先,以年轻人为主的群体生活方式发生变化。正如智能手机所代表的一样,我们已经无法想象远离网络的生活。其次,
[汽车电子]
连接车、人和社会:<font color='red'>NEC</font>网络车载智能通信系统构想
NEC V850 之 定时器TMM0
时钟的事情搞定了,下面就是和时间有关系的定时器了。看了下有3个定时器分别是AA,AB,M。其中M是最简单的一个,只有一个功能就是计数。感觉和STM32的systick有异曲同工之妙。就是为操作系统留的心跳时钟啊。所以先搞他吧。 先说说这个TMM的时钟特性吧,有一个16位的比较寄存器(TM0CMP0),最大计数范围就是0~65535了。另外定时器TMM0不支持自动重装初值,所以在中断服务函数里除了要清标志位还要重新装入初值。然后这个定时器机器简单只有一个可屏蔽中断就是溢出中断。 下面说下他的计数时间的计算方法。关于系统时钟和内部设备时钟在上一篇博文里说过了,系统时钟如果是32MHz,那么内部设备时钟也是32MHz,如果想分频只有在具
[单片机]
<font color='red'>NEC</font> V850 之 定时器TMM0
工业控制计算机红外线遥控键盘的设计
  0. 引言   对于工业控制微机系统来说输入设备键盘几乎是必不可少的。在按键数目较少时,一般直接利用按键控制接口线的高低电平来表示,因此需要相应的接口支持,由于单片工业控制微机系统接口线数目有限,为了减少占用接口线常常采用一键定义多功能,但这又增加了软件的复杂性;在按键数目较多时,则大多采用动态扫描的方式构成键盘矩阵,这种键盘虽然结构原理简单,驱动程序易于设计,但是在具体实现时往往需要花很多的时间去设计印刷电路板、考虑面板布局,而且在硬件资源比较紧张时,还要考虑扩充I/ O 口,从而使得电路变得越来越复杂。    2. 系统简介   本文介绍一种利用红外线发射装置作为工业控制计算机输入键盘的接口原理和实现方法,该接口可以
[工业控制]
华虹NEC挺进大西北 第二届技术研讨会西安开幕
上海华虹NEC电子有限公司日前宣布,由华虹NEC主办,国家集成电路设计西安产业化基地、陕西集成电路行业协会和西安市集成电路产业发展中心承办的“2007华虹NEC西安技术研讨会”于日前在西安举办,吸引了100多位来自西安各设计企业、研究所和高校的专业人士的积极参与。 华虹NEC市场销售副总裁赖磊平、技术副总裁姜庆堂、市场总监姚泽强等出席了此次西安技术研讨会,并在会上致词。会上,华虹NEC阵容强大的演讲团队向西安IC设计业界人士全面介绍了其市场定位和发展策略、最新的工艺发展蓝图和技术能力、生产运营,同时也展示了华虹NEC强大的设计服务、客户服务、测试服务。 据介绍,华虹NEC拥有2条8英寸代工生产线,是大陆第一家专业的8英寸晶圆代
[焦点新闻]
华虹NEC 0.162微米CIS工艺成功进入量产
  晶圆代工企业上海华虹NEC电子有限公司日前宣布成功开发了0。162微米CMOS图像传感器(CIS162)工艺技术,已进入量产阶段。   华虹NEC和关键客户合作共同开发的CIS162工艺是基于标准0。162微米纯逻辑工艺,1。8V的核心器件,3。3V的输入输出电路。经过精细调整集成了4个功能晶体管和光电二极管的像素单元可以提供超低的漏电和高清优质的图像。而特别处理的后端布线工艺保证了像素区高敏感性,可以在同样条件下得到更好的图像对比度和清晰度。该工艺可广泛应用于各种电子产品,如手机摄像头、数码相机、数码摄像机、计算机、玩具等。   华虹NEC的CIS162工艺完全兼容现有的CMOS工艺,既具备CMOS工艺的稳定性,又能满足
[半导体设计/制造]
Tensilica授权NEC设计移动电话基带SOC
  Tensilica日前宣布,授权日本东京NEC公司Xtensa LX2可定制处理器,用于新一代移动电话基带SOC设计。NEC将使用多款Xtensa处理器配置进行基带SOC研发。   Tensilica公司CEO Jack Guedj表示:“NEC选择了Tensilica,我们深感荣幸。Xtensa LX2处理器将帮助NEC设计团队更快完成创新研发、减少设计风险。Tensilica公司Xtensa系列是基带DSP设计的最好选择,因其通过简单优化便能实现无与伦比的高性能及低功耗。”   Tensilica Xtensa可配置处理器被包括NEC在内的多家公司应用于基带DSP应用,因其根据特殊扩展指令优化后可显著加快对高速、实时
[手机便携]
ATtiny13 复位源
复位AVR ATtiny13复位时所有的I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。如果程序永远不利用中断功能,中断向量可以由一般的程序代码所覆盖。这个处理方法同样适用于当复位向量位于应用程序区,中断向量位于Boot 区 — 或者反过来 — 的时候。Figure 13 为复位逻辑的电路图。Table 15 则定义了复位电路的电气参数。 复位源有效时I/O 端口立即复位为初始值。此时不要求任何时钟处于正常运行状态。 所有的复位信号消失之后,芯片内部的一个延迟计数器被激活,将内部复位的时间延长。这种处理方式使得在MCU 正常工作之前有一定的时间让电
[单片机]
<font color='red'>ATtiny13</font> 复位源
NEC与晶门科技合作 为MIPI-DSI规格手机测试芯片互通性
手机装置半导体解决方案供货商NEC电子公司与显示晶片技术厂商暨行动产业处理器接口(MIPI)联盟的赞助成员晶门科技有限公司近日宣布两家公司正式签订协议,合作为基于行动产业处理器接口(MIPI)显示器串行接口(DSI)规格的手机测试液晶显示(LCD)驱动器芯片及桥接芯片的互通性。芯片的确认有助手机生产商根据MIPI-DSI规格开发应用程序丰富的手机。 上述两家公司将建立一个双方同意的平台与方法,以根据MIPI-DSI规格及互通性进行测试。NEC Electronics提供液晶显示驱动器芯片,而晶门科技则提供MIPI桥接芯片。两家公司计划把能兼容MIPI-DSI规格的产品于年底前带到市场。有了整合的MIPI接口后,主机处理器与LCD
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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