?? keyboard.txt
字號:
#include <intrins.h>
#include <stdio.h>
#include <math.h>
//#include <copy12864.h>
#define uchar unsigned char
unsigned char code num [] ;
void delay(void)
{
uchar i;
for(i=300;i>0;i--){};
}
uchar keyscan(void)
{
uchar scancode , tempcode ;
P2 = 0xf0 ;
if((P2 & 0xf0)!=0xf0)
{
delay();
if((P2&0xf0)!=0xf0)
{
scancode = 0xfe ;
while((scancode & 0x10)!=0)
{
P2=scancode;
if((P2 & 0xf0)!= 0xf0)
{
tempcode = (P2 & 0xf0)|0x0f;
return((~scancode) + (~tempcode));
}
else scancode =(scancode<<1) | 0x01;
}
}
}
return(0);
}
uchar getvalue ()
{
uchar i , j , k , value , number [ 10 ] ;
j = 0 ;
i = keyscan () ;
value = 0 ;
while ( i != 0 )
{
switch( i )
{
case 0x11 : // 1行1列,數字0
number [ j ++ ] = 0 ;
break ;
case 0x21 : // 1行2列,數字1
number [ j ++ ] = 1 ;
break ;
case 0x41 : // 1行3列,數字2
number [ j ++ ] = 2 ;
break ;
case 0x81 : // 1行4列,數字3
number [ j ++ ] = 3 ;
break ;
case 0x12 : // 2行1列,數字4
number [ j ++ ] = 4 ;
break ;
case 0x22 : // 2行2列,數字5
number [ j ++ ] = 5 ;
break ;
case 0x42 : // 2行3列,數字6
number [ j ++ ] = 6 ;
break ;
case 0x82 : // 2行4列,數字7
number [ j ++ ] = 7 ;
break ;
case 0x14 : // 3行1列,數字8
number [ j ++ ] = 8 ;
break ;
case 0x24 : // 3行2列,數字9
number [ j ++ ] = 9 ;
break ;
default : break ;
}
}
for ( k = 0 ; k < j ; k ++ )
{
value = value + num [ j -- ] * ( 10 ^ i ) ;
}
return ( value ) ;
}