红外线遥控解码接收程序-C语言.doc_第1页
红外线遥控解码接收程序-C语言.doc_第2页
红外线遥控解码接收程序-C语言.doc_第3页
红外线遥控解码接收程序-C语言.doc_第4页
红外线遥控解码接收程序-C语言.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

红外线遥控解码接收程序-C语言.txt铁饭碗的真实含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃。就算是一坨屎,也有遇见屎壳郎的那天。所以你大可不必为今天的自己有太多担忧。红外线遥控解码接收程序-C语言#include #define uchar unsigned char#define uint unsigned int#define IR_RE P3_2bit k=0; /红外解码判断标志位,为0则为有效信号,为1则为无效uchar date4=0,0,0,0; /date数组为存放地址原码,反码,数据原码,反码/*-延时1ms程子程序-*/delay1000() uchar i,j;i=5;doj=95; doj-; while(j); i-; while(i);/*-延时882us子程序-*/delay882()uchar i,j;i=6;doj=71; doj-; while(j); i-; while(i);/*-延时2400us程子程序-*/delay2400() uchar i,j;i=5;doj=237; doj-; while(j); i-; while(i);/*/*/*-*/*-红外解码程序(核心)-*/*-*/void IR_decode() uchar i,j; while(IR_RE=0); delay2400(); if(IR_RE=1) /延时2.4ms后如果是高电平则是新码 delay1000(); delay1000(); for(i=0;i4;i+) for(j=0;j=1; datei=datei|0x00; else if(IR_RE=1) delay1000(); datei=1; datei=datei|0x80; /1位数据接收结束 /32位二进制码接收结束 /*/*/*-外部中断0程序-*/*-主要用于处理红外遥控键值-*/void int0() interrupt 0 uchar i; k=0; EX0=0; /检测到有效信号关中断,防止干扰 for(i=0;i4;i+) delay1000(); if(IR_RE=1)k=1; /刚开始为9ms的引导码. if(k=0) / EX0=0; /检测到有效信号关中断,防止干扰 IR_decode(); /如果接收到的是有效信号,则调用解码程序 P0=date1; delay2400(); delay2400(); delay2400(); EX0=1; /开外部中断,允许新的遥控按键/*/*void main() SP=0x60; /堆栈指针 EX0=1; /允许外部中断0,用于检测红外遥控器按键 EA=1; /总中断开 while(1);总结:关于本段程序的精确延时在里的评论有很好的诠释.以上程序段可以应用在51/52单片机里.下面的程序可以应用在STC12C5410/STC12C2052型号的单片机里面./在STC12C5410上运用红外线解码程序.主要的问题在于延迟上。#include #define uchar unsigned char#define uint unsigned int#define IR_RE P3_2bit k=0; /红外解码判断标志位,为0则为有效信号,为1则为无效uchar date4=0,0,0,0; /date数组为存放地址原码,反码,数据原码,反码/*-延时1ms程子程序-*/delay1000()uchar i,j;i=200;doj=13; doj-; while(j); i-; while(i);/*/*-延时882us子程序-*/delay882()uchar i,j;i=84;doj=30; doj-; while(j); i-; while(i);/*-延时2400us程子程序-*/delay2400() uchar i,j;i=200;doj=34; doj-; while(j); i-; while(i);/*/*/*-*/*-红外解码程序(核心)-*/*-*/void IR_decode() uchar i,j; while(IR_RE=0); delay2400(); if(IR_RE=1) /延时2.4ms后如果是高电平则是新码 delay1000(); delay1000(); for(i=0;i4;i+) for(j=0;j=1; datei=datei|0x00; else if(IR_RE=1) delay1000(); datei=1; datei=datei|0x80; /1位数据接收结束 /32位二进制码接收结束 /*/*/*-外部中断0程序-*/*-主要用于处理红外遥控键值-*/void int0() interrupt 0 uchar i; k=0; EX0=0; /检测到有效信号关中断,防止干扰 for(i=0;i4;i+) delay1000(); if(IR_RE=1)k=1; /刚开始为9ms的引导码. if(k=0) / EX0=0; /检测到有效信号关中断,防止干扰 IR_decode(); /如果接收到的是有效信号,则调用解码程序 P1=date3; delay2400(); delay2400(); delay2400(); EX0=1; /开外部中断,允许新的遥控按键/*/*/主函数。 void main()SP=0x60;EX0=1;EA=1;while(1);通过查询法的遥控解码子程序:/*#include #define uchar unsigned char#define uint unsigned int#define IR_RE P3_2bit k=0; /红外解码判断标志位,为0则为有效信号,为1则为无效uchar date4=0,0,0,0; /date数组为存放地址原码,反码,数据原码,反码/*-延时1ms程子程序-*/delay1000() uchar i,j;i=5;doj=95; doj-; while(j); i-; while(i);/*-延时882us子程序-*/delay882()uchar i,j;i=6;doj=71; doj-; while(j); i-; while(i);/*-延时2400us程子程序-*/delay2400() uchar i,j;i=5;doj=237; doj-; while(j); i-; while(i);/*/*/*-*/*-红外解码程序(核心)-*/*-*/void IR_decode() uchar i,j; while(IR_RE=0); delay2400(); if(IR_RE=1) /延时2.4ms后如果是高电平则是新码 delay1000(); delay1000(); for(i=0;i4;i+) for(j=0;j=1; datei=datei|0x00; else if(IR_RE=1) delay1000(); datei=1; datei=datei|0x80; /1位数据接收结束 /32位二进制码接收结束 /*/*/*-主要用于处理红外遥控键值-*/void jiema() uchar i; k=0; for(i=0;i8;i+) delay1000(); if(IR_RE=1) /刚开始为9ms的引导码. k=1; bre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论