'
没接触过这东西,心里没底,呵呵~~其实我们做的东西多数都是没实践过的.
'
#define uchar unsigned char
//
uchar code cod[]=
{0xfd,0x60,0xda,0xf2,0x67,0xb7,0xbf,0xe0,0xfe,0xf7,0xef,0x3f,0x9d,0x7b,0x9f,0x8f,0x02,0x00};
//0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,-,空,
sbit sck=0x97;
sbit sdat=0x96;
sbit kclk=0xb5; //键盘时钟p3.5
sbit kdat=0xb4; //键盘数据p3.
sbit port=0xb1; //tx数据线
//延时子程序最大 65535*16us
void delay(unsigned int i)
{
unsigned int a;
for(a=0;a<i;a++);
}
//键盘内码转换
uchar change_code(uchar in)
{
switch(in)
{
case 0x70:return 0x00;
case 0x69:return 0x01;
case 0x72:return 0x02;
case 0x7a:return 0x03;
case 0x6b:return 0x04;
case 0x73:return 0x05;
case 0x74:return 0x06;
case 0x6c:return 0x07;
case 0x75:return 0x08;
case 0x7d:return 0x09;
default:return in;//不是数值返回原码
}
}
//键盘接收
uchar ps2rec ()
{uchar temp,j,i;
temp=0x00;
while(kclk){};//等待设备把时钟拉低
while(!kclk){};//等待设备把时钟拉高
for(j=0;j<=8;j++)
{
temp=temp>>1;
if(kdat==1)i=0x80;
else i=0x00;
temp=temp|i;
while(!kclk){};//等待设备把时钟拉高
while(kclk){};//等待设备把时钟拉低
}
delay(20);
return temp;
}
这个是小弟做的ps2键小盘的接收程序。请老大们过目,keil通过。