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

📄 drv_kbd.c

📁 基于MSP430FG4618MCU的铭正同创LCD驱动程序。
💻 C
字号:
#include "sys_def.h"
#include "mng_tsk.h"
#include "mng_irq.h"
#include "drv_kbd.h"

USHORT	usKeyMem		= 0;
USHORT	usKeyCode		= 0;
UCHAR	ucKeyFix		= 0;
UCHAR	ucAgreeCnt		= 0;
USHORT	usCount			= 0;
UCHAR	ucState			= KEY_IDLE;
USHORT	usTimer			= 0;
static UCHAR ucSmpCnt;

int SendKeyMsg(USHORT usVtg)
{
	UCHAR ucKeyID;
	
	if (400 <= usVtg && usVtg <= 535){  
		ucKeyID = KEY_ESC;
	}
	else if (940 <= usVtg && usVtg <= 1000){  
		ucKeyID = KEY_ENTER;
	}
	else if (1420 <= usVtg && usVtg <= 1500){  
		ucKeyID = KEY_LEFT;
	}
	else if (1900 <= usVtg && usVtg <= 1950){  
		ucKeyID = KEY_DOWN;
	}
	else if (2400 <= usVtg && usVtg <= 2450){  
		ucKeyID = KEY_RIGHT;
	}
	else if (2900 <= usVtg && usVtg <= 2950){  
		ucKeyID = KEY_UP;
	}
	else if (3450 <= usVtg && usVtg <= 3490){  
		ucKeyID = KEY_POWER;
	}
	else if (4080 <= usVtg && usVtg <= 4095){  
		ucKeyID = KEY_MENU;
	}
	else{
		return NG;
	}
	
	//发送按键消息
	Msg_t stMsg;
	stMsg.ucSrcID = 0;
	stMsg.ucTgtID = 0;
	stMsg.iMsgID = 6;
	SendMsg(&stMsg);
	
	return ucKeyID;
}

// Key中断处理函数
int KbdKeyIrq()
{
	int iRst = NG;
	Msg_t stMsg;
	
	stMsg.ucSrcID = 0;
	stMsg.ucTgtID = 0;
	stMsg.iMsgID = 1;
	SendMsg(&stMsg);
	
	ucSmpCnt = 0;
	ADC12CTL0 |= ADC12SC;
	
	iRst = OK;
	
	return iRst;
}

// Adc12中断处理函数
int KbdAdcIrq()
{
	int iRst = NG;
	Msg_t stMsg;
	
	stMsg.ucSrcID = 0;
	stMsg.ucTgtID = 0;
	stMsg.iMsgID = 2;
	SendMsg(&stMsg);
	
	if (0 == ucSmpCnt){
		usKeyMem = ADC12MEM0;
	}
	if (usKeyMem == ADC12MEM0){
		if (2 > ++ucSmpCnt){
			ADC12CTL0 |= ADC12SC;;
		}
		else{
			SendKeyMsg(usKeyMem);
		}
	}

	iRst = OK;
	
	return iRst;
}

// Keyboard中初始化函数
void KbdInit()
{
	// 初始化Port6
	P6DIR = 0x00;
	P6SEL = 0xFF;
	
	// 初始化ADC12A
	RegIrq(IRQ_PORT1_BIT0, KbdKeyIrq);
	RegIrq(IRQ_ADC12_A0, KbdAdcIrq);
	
	return;
}

⌨️ 快捷键说明

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