红外接收与解码程序实现

需积分: 9 2 下载量 39 浏览量 更新于2024-09-17 收藏 45KB DOC 举报
红外解码程序是一段针对红外通信技术的编程代码,它主要应用于单片机如8051系列,比如使用了Philips公司的8051兼容微控制器。该程序的作者是xuexizhe,创建于2012年2月15日。核心内容包括红外接收器的连接、数据处理以及相关的中断处理。 程序的核心部分首先定义了一些全局变量,如`IRIN`,用于标识红外接收器的数据线,这是一个输入引脚,通过P3口的第3位进行读取。另外,`Disp_Tab`是一个数组,存储了8个字符的红外编码,这些编码可能对应着特定的按键或指令。`LED_W`数组则与LED灯有关,用于可能的显示控制。 函数`delay(uchar z)`实现了简单的延时功能,参数`z`表示需要延迟的时间(单位未明确,但通常用机器周期表示)。这个函数内部使用了嵌套循环来实现计时,对于每个外部循环,内部循环会执行`z`次,从而达到延时的目的。 `timer0init(void)`函数用于初始化定时器0,设置工作方式为模式2(8位自动重装载计数器),并配置了定时器的初值寄存器`TH0`和`TL0`,确保定时器的计数正确。此外,还启用了定时器溢出中断(ET0)、全局中断使能(EA)以及定时器0的启动(TR0)。 红外程序的核心逻辑可能包含以下几个步骤: 1. **红外接收**:通过`IRIN`引脚接收红外信号,将其转换为数字信号,并保存到`irdata[]`数组中。 2. **数据解析**:根据接收到的`irdata[]`中的数据,识别出可能的红外编码,例如通过比较与`Disp_Tab`中的值进行匹配,将接收到的序列解码为具体的命令或指令。 3. **中断处理**:当定时器0溢出时,可能会触发中断,此时需要检查`irreceok`和`irprocok`标志,确认红外接收和处理是否成功。如果一切正常,可能还会更新`ircode[]`数组,进一步分析和处理接收到的红外码。 4. **LED控制**:基于解码后的红外指令,可能调用`disp[]`数组来控制LED灯的显示,比如按下某个键后对应的LED灯亮起。 5. **延时和定时器管理**:在处理过程中,可能需要调用`delay()`函数来控制程序执行的节奏,或者用定时器来管理红外接收和处理的间隔。 这个红外解码程序是一个基础的单片机应用实例,展示了如何利用红外通信技术进行数据传输和基本的硬件操作控制。它展示了对定时器、中断和数组操作的运用,适合初学者学习8051或类似单片机平台的编程实践。