亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? keyscan.c

?? ARM9的串口開發實例
?? C
字號:
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "mmu.h"
#include "uart.h"
#include "timer.h"

/******************************************************************************
	4X4 矩陣鍵盤
四個輸入引腳:	EINT0 -----( GPF0  )----INPUT
				EINT2 -----( GPF2  )----INPUT
				EINT11-----( GPG3  )----INPUT
				EINT19-----( GPG11 )----INPUT
				
四個輸出引腳:	KEYSCAN0---( GPE11 )----OUTPUT
				KEYSCAN1---( GPG6  )----OUTPUT
				KEYSCAN2---( GPE13 )----OUTPUT
				KEYSCAN3---( GPG2  )----OUTPUT
******************************************************************************/
U8 Key_Scan( void )
{
	Delay( 200 ) ;
	rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (1<<6) | (0<<2) ;		//GPG6,2 output 0
	rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (1<<13) | (1<<11) ;		//GPE13,11 output 0
	if(      (rGPFDAT&(1<< 0)) == 0 )		return 4 ;
	else if( (rGPFDAT&(1<< 2)) == 0 )		return 3 ;
	else if( (rGPGDAT&(1<< 3)) == 0 )		return 2 ;
	else if( (rGPGDAT&(1<<11)) == 0 )		return 1 ;
	/*
	rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (0<<6) | (1<<2) ;		//GPG6,2 output 0
	rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (1<<13) | (1<<11) ;		//GPE13,11 output 0
	if(      (rGPFDAT&(1<< 0)) == 0 )		return 11 ;
	else if( (rGPFDAT&(1<< 2)) == 0 )		return 8 ;
	else if( (rGPGDAT&(1<< 3)) == 0 )		return 5 ;
	else if( (rGPGDAT&(1<<11)) == 0 )		return 2 ;

	rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (1<<6) | (1<<2) ;		//GPG6,2 output 0
	rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (1<<13) | (0<<11) ;		//GPE13,11 output 0
	if(      (rGPFDAT&(1<< 0)) == 0 )		return 10 ;
	else if( (rGPFDAT&(1<< 2)) == 0 )		return 7 ;
	else if( (rGPGDAT&(1<< 3)) == 0 )		return 4 ;
	else if( (rGPGDAT&(1<<11)) == 0 )		return 1 ;

	rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (1<<6) | (1<<2) ;		//GPG6,2 output 0
	rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (0<<13) | (1<<11) ;		//GPE13,11 output 0
	if(      (rGPFDAT&(1<< 0)) == 0 )		return 12 ;
	else if( (rGPFDAT&(1<< 2)) == 0 )		return 9 ;
	else if( (rGPGDAT&(1<< 3)) == 0 )		return 6 ;
	else if( (rGPGDAT&(1<<11)) == 0 )		return 3 ;
	*/
	else return 0xff ;
}


static void __irq KeyISR(void)
{
	U8 key ;

	rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((0<<22)|(0<<6)) ;		//GPG11,3 set input
	rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((0<<4)|(0<<0)) ;		//GPF2,0 set input
	
	if(rINTPND==BIT_EINT8_23) 
	{
		ClearPending(BIT_EINT8_23);
		if(rEINTPEND&(1<<11)) 
		{
			//puts("Interrupt eint11 occur...");
			rEINTPEND |= 1<< 11;
		}
		
		if(rEINTPEND&(1<<19)) 
		{
			//puts("Interrupt eint19 occur...");		
			rEINTPEND |= 1<< 19;
		}
	}
	
	else if(rINTPND==BIT_EINT0)
	{
		//puts("Interrupt eint0 occur...");
		ClearPending(BIT_EINT0);
	}
	
	else if(rINTPND==BIT_EINT2) 
	{
		//puts("Interrupt eint2 occur...");
		ClearPending(BIT_EINT2);
	}

	//查詢按鍵鍵值
	key = Key_Scan() ;
	if( key != 0xff )
		printf( "Interrupt occur... K%d is pressed!\n", key ) ;

	//Beep( 2000, 3000 ) ;

	//重新初始化IO口
	rGPGCON = rGPGCON & (~((3<<12)|(3<<4))) | ((1<<12)|(1<<4)) ;		//GPG6,2 set output
	rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2)));		//GPG6,2 output 0
	
	rGPECON = rGPECON & (~((3<<26)|(3<<22))) | ((1<<26)|(1<<22));		//GPE13,11 set output
	rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11)));		//GPE13,11 output 0
	
	rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((2<<22)|(2<<6)) ;		//GPG11,3 set EINT
	rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((2<<4)|(2<<0)) ;		//GPF2,0 set EINT
}

void KeyScanInit(void)
{
	rGPGCON = rGPGCON & (~((3<<12)|(3<<4))) | ((1<<12)|(1<<4)) ;		//GPG6,2 set output
	rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2)));		//GPG6,2 output 0
	
	rGPECON = rGPECON & (~((3<<26)|(3<<22))) | ((1<<26)|(1<<22));		//GPE13,11 set output
	rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11)));		//GPE13,11 output 0
	
	rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((2<<22)|(2<<6)) ;		//GPG11,3 set EINT
	rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((2<<4)|(2<<0)) ;		//GPF2,0 set EINT
	
	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);	
}

void Key_Scan_Test( void )
{
	
	Uart_Printf( "\n4 KEY array TEST ( Interrupt MODE )\n" );
	Uart_Printf( "Press 'ESC' key to Exit this program !\n\n" );

	KeyScanInit() ;
    while( Uart_GetKey() != ESC_KEY ) ;
	rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((0<<22)|(0<<6)) ;		//GPG11,3 set input
	rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((0<<4)|(0<<0)) ;		//GPF2,0 set input
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区日韩一区| 欧美激情一区二区| 欧美日韩国产电影| 亚洲欧洲日产国码二区| 国产呦萝稀缺另类资源| 国产精品青草综合久久久久99| 色视频一区二区| 日韩av一区二区三区| 久久精品欧美日韩精品| 久久综合国产精品| 国产人妖乱国产精品人妖| 成人av资源在线观看| 午夜不卡av在线| 欧美精彩视频一区二区三区| 91国偷自产一区二区三区观看| 日韩成人精品在线| 亚洲欧洲三级电影| 懂色av一区二区三区蜜臀| 亚洲一二三区不卡| 国产精品人妖ts系列视频| 欧美精三区欧美精三区| 91视频国产观看| 大尺度一区二区| 天天影视色香欲综合网老头| 国产精品久久久99| 久久久久九九视频| 欧美大片免费久久精品三p| 美女任你摸久久| 成人免费小视频| 久久综合久久99| 久久久久久久精| 久久99久久99精品免视看婷婷 | 中文字幕一区二区三| 91美女片黄在线观看| 成人97人人超碰人人99| 国产成人精品免费在线| 国产v日产∨综合v精品视频| 韩国在线一区二区| 奇米一区二区三区| 成人免费看片app下载| 欧美放荡的少妇| 国产精品乱码人人做人人爱| 欧美一区二区三区系列电影| 日韩欧美二区三区| 亚洲精品亚洲人成人网| 国产福利精品一区二区| 欧美日韩激情一区二区| 国产无人区一区二区三区| 欧美视频精品在线观看| 久久女同性恋中文字幕| 91在线视频官网| 在线看一区二区| 欧美日韩国产综合一区二区三区| 欧美亚洲国产一区在线观看网站| 成人综合在线网站| 欧美天天综合网| 精品国产污网站| 亚洲精品综合在线| 精品一区二区免费看| 成人av电影在线网| 久久精品国产99| 91免费看`日韩一区二区| 91精品国产综合久久久久久漫画| 日本一区二区三区高清不卡 | 国产专区欧美精品| 日本精品一区二区三区四区的功能| 麻豆精品在线视频| 日本午夜一区二区| 欧美卡1卡2卡| 日韩伦理免费电影| 国产精品国模大尺度视频| 91精品国产91久久综合桃花| 欧美日韩一本到| 日韩三级伦理片妻子的秘密按摩| 欧美日韩一区视频| 欧美一区二区三区免费观看视频| 91久久精品一区二区三| 国产精品一二三在| 欧美日韩中文字幕一区| 国产视频一区在线观看| 极品少妇xxxx精品少妇| 亚洲品质自拍视频| 久久精品欧美一区二区三区麻豆| 婷婷中文字幕一区三区| 国产成人av电影在线观看| 91精品在线麻豆| 亚洲国产精品自拍| 色狠狠一区二区| 一区二区三区不卡视频| 色综合天天综合狠狠| 国产精品电影一区二区三区| 国产一区二区调教| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩一二三区视频| 亚洲国产精品视频| 欧美少妇bbb| 国产麻豆午夜三级精品| 欧美变态口味重另类| 日本 国产 欧美色综合| 日韩欧美一级二级三级| 国产九九视频一区二区三区| 久久精品一二三| 日本二三区不卡| 天天综合网 天天综合色| 欧美高清dvd| 毛片av一区二区| 中文字幕免费不卡| eeuss鲁片一区二区三区| 欧美日韩免费一区二区三区视频| 亚洲天堂免费看| 成人国产免费视频| 亚洲一区二区精品3399| 婷婷国产在线综合| 色噜噜狠狠色综合中国| 午夜视频在线观看一区二区 | 日韩亚洲欧美综合| 国产综合久久久久久鬼色| 国产日韩欧美不卡| 国产成人精品aa毛片| 国产精品久久久久四虎| 91在线你懂得| 亚洲第一av色| 亚洲精品在线三区| 99久久国产综合精品色伊| 91精品国产综合久久久久久久久久| 美女脱光内衣内裤视频久久网站| 中文字幕成人av| 色综合激情五月| 日韩精品一区二区三区三区免费| 日韩一区在线播放| 精品久久久网站| 日本久久电影网| 成人中文字幕在线| 青娱乐精品在线视频| 中文字幕一区二区三区av| 日韩欧美国产综合一区| 色婷婷综合久色| 国产91精品久久久久久久网曝门| 天天做天天摸天天爽国产一区| 国产欧美一区二区精品忘忧草| 亚瑟在线精品视频| 久久亚洲一区二区三区四区| 欧美日韩久久不卡| 欧美视频在线不卡| 亚洲免费在线播放| 日韩亚洲欧美综合| 国产欧美日韩久久| 欧美另类变人与禽xxxxx| 亚洲欧美成aⅴ人在线观看| 一区二区免费在线| 精品一区二区免费| 91久久奴性调教| 制服丝袜成人动漫| 国产精品卡一卡二卡三| 一区二区三区高清在线| 美腿丝袜亚洲综合| 99国产精品久久久久久久久久久 | 亚洲一区二区三区爽爽爽爽爽| 亚洲精品国久久99热| 美女看a上一区| 久久欧美中文字幕| 日韩电影在线观看电影| 国产成人av一区二区三区在线观看| 国产精品久久二区二区| 久久五月婷婷丁香社区| 亚洲视频一区二区在线观看| 日韩主播视频在线| 看电影不卡的网站| 成人av电影在线观看| 欧美色视频在线| 欧美国产一区在线| 亚洲一区免费观看| 国产在线精品一区二区不卡了| av在线播放一区二区三区| 日韩视频在线永久播放| 亚洲激情自拍偷拍| 久久99精品国产| 欧美日韩在线一区二区| 欧美三级在线视频| 中文字幕第一区二区| 国产一区二区三区在线观看免费| 欧美午夜精品久久久久久超碰| 国产亚洲婷婷免费| 综合久久给合久久狠狠狠97色| 久久国产夜色精品鲁鲁99| 欧美午夜电影网| 国产精品免费免费| 成人免费视频视频| 国产三级精品在线| 久久激情五月激情| 3d动漫精品啪啪1区2区免费| 一区二区三区高清在线| 国模娜娜一区二区三区| 欧美欧美欧美欧美首页| 亚洲黄网站在线观看| 99久久婷婷国产精品综合| 国产午夜亚洲精品不卡| 国模娜娜一区二区三区| 久久久久久一二三区| 粉嫩在线一区二区三区视频|