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

📄 keyscan.c

📁 三星2410芯片的一个DEMO程式
💻 C
字号:
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "mmu.h"
#include "uart.h"
#include "timer.h"

static void __irq KeyISR(void)
{
	if(rINTPND==BIT_EINT8_23) {
		ClearPending(BIT_EINT8_23);
		if(rEINTPEND&(1<<11)) {
			puts("eint11\n");
			rEINTPEND |= 1<< 11;
		}
		if(rEINTPEND&(1<<19)) {
			puts("eint19\n");		
			rEINTPEND |= 1<< 19;
		}
	}
	if(rINTPND==BIT_EINT0) {
		puts("eint0\n");
		ClearPending(BIT_EINT0);
	}
	if(rINTPND==BIT_EINT2) {
		puts("eint2\n");
		ClearPending(BIT_EINT2);
	}
}

void KeyScanInit(void)
{
	rGPGCON &= ~((3<<12)|(3<<4));
	rGPGCON |= (1<<12)|(1<<4);		//GPG6,2 output 0
	rGPGDAT &= ~((1<<6)|(1<<2));
	
	rGPECON &= ~((3<<26)|(3<<22));
	rGPECON |= (1<<26)|(1<<22);		//GPE13,11 output 0
	rGPEDAT &= ~((1<<13)|(1<<11));
	
	
	rEXTINT0 &= ~(7|(7<<8));	
	rEXTINT0 |= (2|(2<<8));	//set eint0,2 falling edge int
	rEXTINT1 &= ~(7<<12);
	rEXTINT1 |= (2<<12);	//set eint11 falling edge int
	rEXTINT2 &= ~(0xf<<12);
	rEXTINT2 |= (2<<12);	//set eint19 falling edge int

	rEINTPEND |= (1<<11)|(1<<19);		//clear eint 11,19
	rEINTMASK &= ~((1<<11)|(1<<19));	//enable eint11,19
	ClearPending(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
	pISR_EINT0 = pISR_EINT2 = pISR_EINT8_23 = (U32)KeyISR;
	EnableIrq(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);	

	rGPGCON &= ~(3<<20);
	rGPGUP  &= ~(1<<10);
//	rGPGDAT
}

⌨️ 快捷键说明

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