keyboard.c

来自「键盘驱动程序: 键盘型号:P/S2 此程序已经测试过。」· C语言 代码 · 共 141 行

C
141
字号
				/************* P/S2 keyboard function*************/
				/************* data P1^7,clock Int0 **************/
				
				#include	<ADUC812.h>
												
				sbit kdata = P1^7;
				
				/******************** key define *************/
				unsigned char	key_flag,key_vol;
				unsigned char	intcount=0;
				unsigned char intnum = 9;
				unsigned char	kdd,kdd1,kdd2;		
				
				unsigned char decode(void);
				extern void delayms (unsigned int n);
								
				/************* key interrupt **********************/						
				void int0() interrupt 0
				{
					kdd >>= 1;
					if(kdata == 1)
					{
						kdd = kdd|0x80;	
					}
					
					intcount++;
					
					if(intcount == intnum)
					{
						if(intcount == 9)
							kdd1 = kdd;
						{
							intnum = 20;
						}
						if(intcount == 20)
						{
							kdd2 = kdd;
							EX0 = 0;
							key_flag = 0x01;
						} 
					}
				}
				
				/**************** get key *********************/
				unsigned char get_key(void)
				{
					unsigned char a;
					
					a = decode();
					key_flag = 0;
					delayms(10);
					IE0=0;
					kdd = 0; kdd1 = 0; kdd2 = 0;
					intcount = 0; intnum = 9;
					return a;
				}
					
				/**************** key decode ********************/
				unsigned char decode(void)
				{
					unsigned char a;
										
					if(kdd1==0xe0 & kdd2==0x5a)		// enter down //
					{	return 0xff;
						a='U';
						return a;
					}
					else if(kdd1==0xe0 & kdd2==0xf0)	// enter up //
					{	
						a='N';
						return a;
					}
					else
					{	if(kdd2!=0xf0)
						{return 0xff;
						}
						
							switch (kdd1)
							{
								case 0x70:	a = 0;
										break;
										
								case 0x69:	a = 1;
										break;
							
								case 0x72:	a = 2;
										break;
									
								case 0x7a:	a = 3;
										break;
							
								case 0x6b:	a = 4;
										break;
							
								case 0x73:	a = 5;
										break;
									
								case 0x74:	a = 6;
										break;
							
								case 0x6c:	a = 7;
										break;
							
								case 0x75:	a = 8;
										break;
							
								case 0x7d:	a = 9;
										break;
								
								case 0x71:	a = '.';
										break;
							
								case 0x76:	a = 'E';	// esc //
										break;
								
								case 0x66:	a = 'C';	// clear //
										break;
							
								case 0x05:	a = 'a';	// F1 //
										break;
							
								case 0x06:	a = 'b';
										break;
							
								case 0x04:	a = 'c';
										break;
							
								case 0x0c:	a = 'd';
										break;
							
								case 0x03:	a = 'e';
										break;
							
								case 0x0b:	a = 'f';
										break;
							
								default  :	a = 'X';
							}
					}
					return a;
				}

⌨️ 快捷键说明

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