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

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

?? drv_key.c

?? 使用鍵盤上的上、下、左、右四個按鍵
?? C
字號:
/********************************************************************************************************
 *													*
 *	Copyright (C) SEIKO EPSON CORP. 2002								*
 *													*
 *	File name: Drv_key.c										*
 *	  This is key matrix driver for Star.								*
 *													*
 *													*
 *	Revision history										*
 *		2002.05.30	Andrew Yin	Start.							*
 *		2002.09.29	Andrew Yin	Modify( Change the P26, P27 to P15, P16 for KeyMatrix).	*
 *													*
 *******************************************************************************************************/

#include "common.h"
#include "int.h"
#include "io.h"
#include "main.h"

void vInitKey( void );
void vIntKey( void );
unsigned char rucK5PortData;
unsigned char gucKeyCode;//鍵盤緩沖。當鍵被按下,該鍵碼被保存在鍵盤緩沖區中。目前該緩沖區大小為一個,所以只能保存一個鍵。

void delay();

void vInitKey( void )//初始化鍵盤,設置鍵盤的觸發方式和條件(比較寄存器和掩碼寄存器),中斷優先級(目前為4),最后打開鍵盤中斷。
{
	//P2 setting, P20,P21, as IO ports
	*(volatile unsigned char *)0x402D8 &= 0x0FC;
	//P1 setting, P15,P16, as IO ports
	*(volatile unsigned char *)0x402D4 &= 0x9F;
	
	//P2 input_output selection(for IO ports only), P20, P21, output
	*(volatile unsigned char *)0x402DA |= 0x03;
	//P1 input_output selection(for IO ports only), P15,P16, output
	*(volatile unsigned char *)0x402D6 |= 0x60;
	
	// P20 = P21 ='L'
	*(volatile unsigned char *)0x402D9 &= 0x0FC;
	// P15 = P16 ='L'
	*(volatile unsigned char *)0x402D5 &= 0x9F;
	
	
	//[0x402c0] set K50, K51,K52,K53,K54=KEYI0,KEYI1,KEYI2,KEYI3 KEYI4
	*(volatile unsigned char *)IN_CFK5_ADDR &= 0xe0;	// select K5 function: K50, K51,K52,K53,K54
	//[0x402c9]
	*(volatile unsigned char *)IN_SEP_ADDR &= 0xe0;
	//[0x402ca]
	*(volatile unsigned char *)IN_SPPK_ADDR &= 0x0fc;	//set FPK0 interrupt input port K5
	//[0x402cc]
	*(volatile unsigned char *)IN_SCPK0_ADDR |= 0x1F;	//set K50-K54 input comparison register 0 
	//[0x402ce]
	*(volatile unsigned char *)IN_SMPK0_ADDR |= 0x1F;	//set K50-K54 interrupt mask enable
	//[0x40262]
	*(volatile unsigned char *)INT_PK0_PK1_ADDR &= 0x0f0;
	*(volatile unsigned char *)INT_PK0_PK1_ADDR |= INT_PRIL_LVL4;	//set Key input0 interruput level 4
	//[0x40280]
	*(volatile unsigned char *)INT_FP0_FK_ADDR |= 0x10;		// reset Key input0 interrupt flag
	//[0x40270]
	*(volatile unsigned char *)INT_EP0_EK_ADDR |= 0x10;		// enable Key input0 interrupt
	
	//[0x402c6]
//	*(volatile unsigned char *)IN_SPT0_SPT3_ADDR |= 0x55;	//select K50,K51,K52,K53,K54 input pin for port interrupt
//	*(volatile unsigned char *)IN_SPT0_SPT3_ADDR &= 0x55;
	//[0x402c7]
//	*(volatile unsigned char *)IN_SPT4_SPT7_ADDR |= 0x01;
//	*(volatile unsigned char *)IN_SPT4_SPT7_ADDR &= 0x0fd;
	//[0x402c8]
	//*(volatile unsigned char *)IN_SPP_ADDR &= 0x0e0;		//set FPT0-FPT4 high level triger
}

void vIntKey( void )//鍵盤中斷服務程序。將按鍵保存到鍵盤緩沖中,由用戶讀取。并且清除鍵盤中斷標志。
{
	asm("pushn	%r15");			// save r1,r2...r15
	asm("ld.w	%r9,%psr");		// EI,enable interrupt 
	asm("or 	%r9,0x10");
	asm("ld.w	%psr,%r9");

  	//check No 1,4,7,Menu,*   set P15 = 0, other = 1
	*(volatile unsigned char *)IO_P2D_ADDR |= 0x03;	// set P15 = 0
	*(volatile unsigned char *)IO_P1D_ADDR &= 0x0DF;
	*(volatile unsigned char *)IO_P1D_ADDR |= 0x40;
  	
  	rucK5PortData = *(volatile unsigned char *)IN_K5D_ADDR & 0x1F;	// [0x402c1]
 	while (1)
 	{
 		//delay();
 		if (rucK5PortData == (*(volatile unsigned char *)IN_K5D_ADDR & 0x1F))
 			break;
 		else
 			rucK5PortData = *(volatile unsigned char *)IN_K5D_ADDR & 0x1F;	// [0x402c1]
 	}
   	switch( rucK5PortData )
 	{
 		case 0x1E:
 			gucKeyCode = DOWNKEY;		//K50
 			break;
 		case 0x1D:
 			gucKeyCode = CANCELKEY;		//K51
 			break;
 		case 0x1B:
 			gucKeyCode = NO4KEY;		//K52
 			break;
 		case 0x17:
 			gucKeyCode = NO5KEY;		//K53
 			break;
 		case 0x0F:
 			gucKeyCode = NO6KEY;		//K54
 			break;
 		default:
 			gucKeyCode = NULL;
 	}
	if (gucKeyCode == NULL)
	{
		//check No 2,5,8,0,Cancel,   set P21 = 0, other = 1
		*(volatile unsigned char *)IO_P2D_ADDR &= 0xfd;	// set P21 = 0
		*(volatile unsigned char *)IO_P2D_ADDR |= 0x01;
		*(volatile unsigned char *)IO_P1D_ADDR |= 0x60;
			 	
	 	rucK5PortData = *(volatile unsigned char *)IN_K5D_ADDR & 0x1F;	// [0x402c1]
	   	switch( rucK5PortData )
	 	{
	 		case 0x1E:
	 			gucKeyCode = RIGHTKEY;		//K50
	 			break;
	 		case 0x1D:
	 			gucKeyCode = MENUKEY;		//K51
	 			break;
	 		case 0x1B:
	 			gucKeyCode = NO7KEY;		//K52
	 			break;
	 		case 0x17:
	 			gucKeyCode = NO8KEY;		//K53
	 			break;
	 		case 0x0F:
	 			gucKeyCode = NO9KEY;		//K54
	 			break;
	 		default:
	 			gucKeyCode = NULL;
	 	}
	}
	
	if (gucKeyCode == NULL)
	{
		//check No 3,6,9,#,ONOFF,   set P20 = 0, other = 1
		*(volatile unsigned char *)IO_P2D_ADDR &= 0xfe;	// set P20 = 0
		*(volatile unsigned char *)IO_P2D_ADDR |= 0x02;
		*(volatile unsigned char *)IO_P1D_ADDR |= 0x60;
	 	
	 	rucK5PortData = *(volatile unsigned char *)IN_K5D_ADDR & 0x1F;	// [0x402c1]
	   	switch( rucK5PortData )
	 	{
	 		case 0x1E:
	 			gucKeyCode = LEFTKEY;		//K50
	 			break;
	 		case 0x1D:
	 			gucKeyCode = CALLKEY;		//K51
	 			break;
	 		case 0x1B:
	 			gucKeyCode = ASTERISKKEY;		//K52
	 			break;
	 		case 0x17:
	 			gucKeyCode = NO0KEY;		//K53
	 			break;
	 		case 0x0F:
	 			gucKeyCode = SHARPKEY;		//K54
	 			break;
	 		default:
	 			gucKeyCode = NULL;
	 	}
	}
	
	if (gucKeyCode == NULL)
	{
		//check Call,Down,Right,Left,Done,   set P16 = 0, other = 1
		*(volatile unsigned char *)IO_P2D_ADDR |= 0x03;	// set P16 = 0
		*(volatile unsigned char *)IO_P1D_ADDR &= 0x0BF;
		*(volatile unsigned char *)IO_P1D_ADDR |= 0x20;
	 	
	 	rucK5PortData = *(volatile unsigned char *)IN_K5D_ADDR & 0x1F;	//	 [0x402c1]
	   	switch( rucK5PortData )
	 	{
	 		case 0x1E:
	 			gucKeyCode = DONEKEY;		//K50
	 			break;
	 		case 0x1D:
	 			gucKeyCode = ONOFFKEY;		//K51
	 			break;
	 		case 0x1B:
	 			gucKeyCode = NO1KEY;		//K52
	 			break;
	 		case 0x17:
	 			gucKeyCode = NO2KEY;		//K53
	 			break;
	 		case 0x0F:
	 			gucKeyCode = NO3KEY;		//K54
	 			break;
	 		default:
	 			gucKeyCode = NULL;
	 	}
	}
 	//[0x40280]
	*(volatile unsigned char *)INT_FP0_FK_ADDR |= 0x10;		// reset Key input0 interrupt flag
	
	// P20 = P21 ='L'
	*(volatile unsigned char *)0x402D9 &= 0x0FC;
	// P15 = P16 ='L'
	*(volatile unsigned char *)0x402D5 &= 0x9F;
	

	asm("popn	%r15");			// restore r1,r2...r15
	asm("reti");
}

void delay()
{
	int i,j;
	for (i = 0;i<20000;i++)
		j += (i >1000)?i/2 *3 +10: i;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品综合一本久道在线视频| 成人性生交大片免费看在线播放| 国产精品大尺度| 7878成人国产在线观看| 欧美性一二三区| 日韩情涩欧美日韩视频| 91精品久久久久久久99蜜桃| 7777精品伊人久久久大香线蕉的| 欧美高清视频不卡网| 7777精品伊人久久久大香线蕉| 欧美精品久久一区| www国产亚洲精品久久麻豆| 久久久国产精品麻豆| 中文字幕乱码亚洲精品一区| 中文字幕一区二区在线观看 | 亚洲国产日韩精品| 亚洲一区二区视频| 麻豆国产91在线播放| 国产一区二三区| 91久久精品日日躁夜夜躁欧美| 波多野结衣亚洲一区| 国产成人免费av在线| av电影在线观看完整版一区二区| 91麻豆免费在线观看| 欧美日韩成人在线一区| 久久久五月婷婷| 一区二区三区中文在线观看| 午夜av一区二区三区| 国产一区二区成人久久免费影院| 国产99一区视频免费| 在线观看国产日韩| 精品国产乱码91久久久久久网站| 国产精品视频一区二区三区不卡| 亚洲一区二区三区免费视频| 国产在线精品视频| 欧美三片在线视频观看| 国产人久久人人人人爽| 337p粉嫩大胆噜噜噜噜噜91av| 欧美a级一区二区| 精品中文字幕一区二区小辣椒 | 欧洲精品中文字幕| 欧美一区二区免费视频| 欧美激情一区三区| 亚洲午夜激情网站| 风流少妇一区二区| 日韩一区二区三区四区| 一区二区三区在线不卡| 国产电影一区在线| 日韩情涩欧美日韩视频| 亚洲成人自拍偷拍| 白白色 亚洲乱淫| 久久品道一品道久久精品| 国产喂奶挤奶一区二区三区| 日本亚洲三级在线| 不卡电影一区二区三区| 日韩欧美国产午夜精品| 亚洲视频中文字幕| 国产很黄免费观看久久| 日韩无一区二区| 亚洲国产sm捆绑调教视频 | 中文字幕一区二区三区不卡| 免费观看在线色综合| 911精品产国品一二三产区| 欧美国产精品一区| 国产乱妇无码大片在线观看| 精品播放一区二区| 久久国产尿小便嘘嘘尿| 欧美一区二区三区性视频| 午夜激情综合网| 欧美这里有精品| 亚洲一二三四区不卡| 91国产福利在线| 国产成人亚洲综合色影视| 在线播放日韩导航| 亚洲不卡在线观看| 欧美三级欧美一级| 午夜精品一区在线观看| 欧美丰满嫩嫩电影| 日本一区中文字幕| 日韩一级二级三级精品视频| 日精品一区二区| 日韩亚洲欧美成人一区| 激情综合色综合久久| 精品国产91乱码一区二区三区| 久久99精品久久只有精品| 久久久久久黄色| 国产成人av电影在线播放| 国产精品丝袜在线| 91蝌蚪porny| 午夜视频一区二区三区| 日韩一级完整毛片| 风间由美一区二区三区在线观看 | 日韩三级视频中文字幕| 男女激情视频一区| 国产欧美日韩麻豆91| 91麻豆高清视频| 亚洲风情在线资源站| 欧美tk—视频vk| 成年人国产精品| 天天综合网 天天综合色| 精品国产99国产精品| 99国产精品久久久久久久久久| 亚洲在线中文字幕| wwwwww.欧美系列| 色呦呦国产精品| 久久电影网站中文字幕| 自拍偷自拍亚洲精品播放| 欧美日韩国产一级| 国产成人小视频| 亚洲成年人影院| 中文字幕免费观看一区| 91麻豆精品国产自产在线观看一区| 国产一区二区视频在线播放| 亚洲码国产岛国毛片在线| 日韩免费高清电影| 一本色道a无线码一区v| 极品少妇xxxx精品少妇| 一区二区三区四区高清精品免费观看 | 国产三级一区二区三区| 色视频欧美一区二区三区| 国产乱码精品一区二区三区五月婷| 亚洲视频一区在线| 欧美精品一区二区精品网| 在线观看免费视频综合| 波多野结衣亚洲| 国产精品一区免费在线观看| 视频在线在亚洲| 亚洲国产综合色| 一区二区三区av电影| 中文字幕乱码一区二区免费| 亚洲精品一区二区三区影院 | 欧美日韩二区三区| jvid福利写真一区二区三区| 狠狠色伊人亚洲综合成人| 亚洲国产日产av| 亚洲黄色录像片| 亚洲少妇中出一区| 国产精品色婷婷久久58| www日韩大片| 日韩精品一区国产麻豆| 欧美一区二区视频在线观看2022| 日本韩国视频一区二区| 不卡在线视频中文字幕| 成人黄色777网| 成人激情小说乱人伦| 国产91精品精华液一区二区三区| 久久99精品久久久| 精品在线一区二区三区| 久久电影国产免费久久电影| 日av在线不卡| 免费成人结看片| 老司机精品视频在线| 麻豆精品久久精品色综合| 久久99久久99精品免视看婷婷| 免费久久99精品国产| 国产在线精品一区二区| 国产成人精品一区二区三区四区| 久久69国产一区二区蜜臀| 精品无码三级在线观看视频| 韩国三级电影一区二区| 国产精品资源在线| 宅男噜噜噜66一区二区66| 欧洲人成人精品| 欧美日韩在线三级| 欧美猛男gaygay网站| 91麻豆精品国产无毒不卡在线观看 | 日韩一区二区三区电影| 久久先锋影音av鲁色资源网| 欧美激情一区二区| 亚洲欧美日韩一区二区| 亚洲自拍另类综合| 美腿丝袜亚洲一区| 波多野结衣一区二区三区 | 欧美主播一区二区三区| 欧美精品久久99| 久久久精品免费观看| 中文字幕在线不卡| 丝袜美腿高跟呻吟高潮一区| 久草在线在线精品观看| 99久久婷婷国产综合精品电影| 欧美在线视频你懂得| 日韩在线a电影| 91蜜桃视频在线| 欧美日精品一区视频| 日韩欧美国产综合| 国产精品国产自产拍在线| 亚洲一区在线看| 国产91在线观看| 欧美欧美欧美欧美| 国产精品视频一二三| 蜜桃视频在线一区| 99v久久综合狠狠综合久久| 91精品国产乱| 亚洲女人****多毛耸耸8| 久久99在线观看| 在线欧美日韩国产| 欧美激情一区二区三区蜜桃视频 | 中文字幕巨乱亚洲| 日日噜噜夜夜狠狠视频欧美人 | 亚洲成人免费看|