irm_int.c

来自「使用isis模拟的红外编解码实验」· C语言 代码 · 共 41 行

C
41
字号
#include "irm_int.h"
unsigned char irm_code;//红外解码键值返回全局变量

void irm_int2_init(void)
{
	EA = 1;
	IT0 = 1;//下降沿中断
	EX0 = 1;
	irm_code=0xff;
}

void irm_int(void) interrupt 0
{
	unsigned char i,flag;
	unsigned int counter;
	unsigned int temp=0;
	EA=0;
	temp=0xff;
	counter=0;
	flag=0;	
	for(i=0;i<13;i++) {																	 
		counter=0;
		while(!IRM_DQ) {if(++counter>300) break;}
		if((counter>10)&&(counter<300)) {
			if(flag==0) temp<<=1; 
			if(counter>200) temp++;
			else flag ^= 0xff;
		}
		counter=0;
		while(IRM_DQ) {if(++counter>300) break;}
		if((counter>10)&&(counter<300)) {
			if(flag==0) temp<<=1; 
			if(counter>200) temp++;
			else flag ^= 0xff;
		}
	}
	irm_code=(unsigned char)(temp&0x00ff);
	IE0 = 0;
	EA = 1;		
}
	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?