« 单片机按键处理的新思路CRC循环冗余算法原理 »

比较流行的红外解码程序

分类: 单片机指令和编程 发布: admin 浏览: 日期: 2017年12月27日

这里的红外解码程序算法,其思路类似于原来中断函数的方法,也是记录两个下降沿之间的时间,并将其存入33个元素的一个数组中,数组的第一个位置存入的是那个引导码。

/*-----------------------------------------------------------------------------------------

定时器0中断处理

-----------------------------------------------------------------------------------------*/

void tim0_isr (void) interrupt 1 using 1

irtime++; //用于计数2个下降沿之间的时间,256us进一次定时器中断

if(irtime>=1000)//irtime>=1000说明按键已经松天有1000*256=256ms了,故可以使能红外接收功能

ir_flag=0;//使能红外接收功能

/*-----------------------------------------------------------------------------------------

外部中断0中断处理

-----------------------------------------------------------------------------------------*/

void EX0_ISR (void) interrupt 0 //外部中断0服务函数

tatic unsigned char  i;            //接收红外信号处理

tatic bit startflag;                //是否开始处理标志位

if(irtime<=54&&irtime>=50)//接收到引导码 TC9012的头码,9ms+4.5m

i=0

if(ir_flag==1)

irtime=0;                             //清零计数器

retur

if(ir_flag==0)

irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1

irtime=0;//清零irtime变量(老板习惯叫做寄存器)

i++;//数组下标自增1

if(i==33)

irok=1;//接收完33个红外数据

i=0;//数组下标清零

ir_flag=1;//失能红外接收功能

下面研究第二种红外解码的程序,这个程序没有用到任何中断,非常有意思啊,直接上源码.不解释.

/*----------------------------------------------------------------------------------------------------

红外解码处理函数

----------------------------------------------------------------------------------------------------*/

void ir(void)

if(ir_check_flag==1)

ir_check_flag=0

if(PB.0==1)

if(irisH_bit==0)

irisH_bit= 1

//这里可以添加上升沿到时时,做相应的处理

else

if(irisH_bit==1)

irisH_bit= 0

if(irtime<=110&&irtime>=102)             //引导码TC9012的头码,9ms+4.5m

ramaddr1= irdata

um= 0

ir_en_flag=0

if(ir_en_flag==1)

irtime=0;                  //如果是重复码就将irtime清零,然后退出函数

retur

if(ir_en_flag==0)

*ramaddr1= irtime

ramaddr1++

irtime= 0

um++

if(num==33)

irok=1;          //32个数据全部存储完毕,一帧数据接收完毕

um=0

ramaddr1= irdata

ir_en_flag=1

irtime++

else

return

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 文雅单片机. Some Rights Reserved.