⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ic165_.c

📁 p89lpc915程序
💻 C
字号:
#include "comm.h"
#include "ic165.h"
#include "Key_process.h"

#define MAX_165KEY_CODE 8
uchar code panel_key_table[] = {
PANEL_PREV_KEY,	/*1*/
PANEL_FB_KEY,	/*2*/
PANEL_FF_KEY,	/*3*/
PANEL_NEXT_KEY,	/*4*/
PANEL_OPEN_KEY,	/*5*/
PANEL_PLAY_KEY,	/*6*/
PANEL_STOP_KEY,	/*7*/
PANEL_PWER_KEY,	/*8*/
PANEL_FB_KEY|PANEL_PWER_KEY,	/*9*/
PANEL_STOP_KEY|PANEL_PWER_KEY,	/*10*/
PANEL_OPEN_KEY|PANEL_PWER_KEY	/*11*/
};

char code ic165_2_irkey[] = {
_NO_KEY,
_REPEAT_KEY,
_PREV_KEY,
_NEXT_KEY,
_NO_KEY,
_OPEN_KEY,
_PLAY_KEY,
_STOP_KEY,
_POWER_KEY,
_NO_KEY,
_IR_SEL_KEY
};

extern uchar pre_165code;
extern uchar cnt_165;
#if 0
void ic165_init()
{
/*
 *P2M1.7 = 0;	P2M2.7 = 1;
 *P2M1.6 = 0;	P2M2.6 = 1;
 *P2M1.0 = 0;	P2M2.0 = 0;
 */
	P2M1 &= 0x3E;
	P2M2 &= 0xFE;
	P2M2 |= 0xC0;
}
#endif

uchar read165()
{
	uchar rtn_key = 0,i;
	LD_165 = 1;
	LD_165 = 0;
	LD_165 = 1;	/*load the parallel data*/
	for(i=0;i<8;i++)
		{
		rtn_key <<= 1;
		CLK_165 = 0;
		if(SER_165)
			{
			rtn_key |= 1;
			}
		CLK_165 = 1;
		}
	rtn_key = ~rtn_key;
	return rtn_key;
}
uchar get_key()
{
	uchar i,rtn_value=0;
	i = read165();
/*	SBUF = i;
	while(TI == 0);
	TI = 0;*/
	if(i != 0x00)
		{
		if(i != pre_165code)
			{
			if((pre_165code != 0)&&(cnt_165 == 0))	/*for two key to release*/
				{}
			else
				{
				cnt_165 = 1;
				}
			}
		else
			{
			if(cnt_165 != 0)
				{
				cnt_165 ++;
				}
			if(cnt_165 > 0xf0)
				{
				cnt_165 = 0;
				if(i == PANEL_STOP_KEY)
					{
					rtn_value = 5;
					}
/*				else if(i == PANEL_PREV_KEY)
					{
					rtn_value = 0xA;
					}*/
				}
			if((cnt_165 >= 10) && (cnt_165 <20))
				{
				cnt_165 = 20;
				for(rtn_value = 0;rtn_value<MAX_165KEY_CODE;rtn_value++)
					{
					if(i == panel_key_table[rtn_value])
						{
						break;
						}
					}
				rtn_value ++;
				if(rtn_value > MAX_165KEY_CODE) /*|| (i == PANEL_PREV_KEY))*/
					rtn_value = 0;
				}
			}
		}
#if 0
	else
		{
		if(pre_165code == PANEL_PREV_KEY)
			if(cnt_165 > 10)
				rtn_value = 0x1;	/*I use repeat key to select IR input, short press ,it return 0x1, long press it return 0xA*/
		}
#endif
	pre_165code = i;
	return rtn_value;
}
char panel_convert_key(uchar key)
{
	return ic165_2_irkey[key];
}

⌨️ 快捷键说明

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