打印
[菜农助学交流]

[2012助学第一期]南信大瑜的学习笔记ps2键盘转USB键盘

[复制链接]
1455|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.功能说明:
    基于助学板,实现了PS2键盘转USB键盘的功能,即助学板读取PS2键盘的码值,发送给电脑,从而实现PS2USB的功能。
    在电脑上打开记事本,按小键盘上的数字键,就可以在电脑上输入相应的数字。
2.程序说明。

void PS2_Init(void)  //PS2初始化程序
{

DrvGPIO_Open(E_GPB, 13, E_IO_INPUT); //把PS2 DATA设为输入
/* Configure general GPIO interrupt */
DrvGPIO_Open(E_GPB,14,E_IO_INPUT); //把PS2 CLK设为输入

/* Configure external interrupt */
DrvGPIO_EnableEINT0(E_IO_FALLING, E_MODE_EDGE, EINT0Callback);//使能PS2 CLK中断
}


void EINT0Callback(void)    //PS2中断处理函数,在这里对PS2进行解码
{
static unsigned char tempdata=0;
static unsigned char Key_Up;

if(BIT_Count==0)
{
           tempdata=0;
}
BIT_Count++;
if(BIT_Count>1&&BIT_Count<10)
{
           tempdata>>=1;
           if(DrvGPIO_GetBit(E_GPB, 13))
           {
                    tempdata|=0x80;
           }
}
else if(BIT_Count==11)
{
           PS2_Data=tempdata;
           //printf("PS2_Data=%d\r\n",PS2_Data);
           BIT_Count=0;
           if(PS2_Data==0xf0)
           {
                    Key_Up=1;
           }
           else
           {
                    if(Key_Up==1)
                    {
                             PS2_Data_Valid=0;
                             Key_Up=0;
                    }
                    else
                    {
                             PS2_Data_Valid=1;
                    }
           }
           
           
}
}



void HID_GetInReport(uint8_t *buf)
{
    int32_t i;
    uint32_t key = 0xF;
//buf[2] = 0x59;
if(PS2_Data_Valid==1)
{
  PS2_Data_Valid=0;
  switch(PS2_Data)  //由于PS2键盘的码值 和USB键盘的码值不一样,所以要做一下转换,这里只实现了0-9,10个数字键的转换
  {
   case 0x70: //0
     buf[2]= 0x62; break;
   case 0x69: //1
     buf[2]= 0x59; break;
   case 0x72: //2
     buf[2]= 0x5a; break;
   case 0x7a: //3
     buf[2]= 0x5b; break;
   case 0x6b: //4
     buf[2]= 0x5c; break;
   case 0x73: //5
     buf[2]= 0x5d; break;
   case 0x74: //6
     buf[2]= 0x5e; break;
   case 0x6c: //7
     buf[2]= 0x5f; break;
   case 0x75: //8
     buf[2]= 0x60; break;
   case 0x7d: //9
     buf[2]= 0x61; break;
   default: buf[2]=0;
     break;
  }
}
else
{
  for (i=0;i<8;i++)
  {
    buf[i] = 0;
  }
  
}
}

         

















































相关帖子

沙发
南信大瑜|  楼主 | 2012-5-16 15:59 | 只看该作者

QQ截图20120516154156.jpg (43.97 KB )

QQ截图20120516154156.jpg

QQ截图20120516154220.jpg (37.84 KB )

QQ截图20120516154220.jpg

PS2_KeyBoard.rar

1.14 MB

使用特权

评论回复
板凳
kyzb001| | 2012-5-18 09:05 | 只看该作者
:victory:

使用特权

评论回复
地板
tao0127| | 2012-9-21 17:52 | 只看该作者
顶一下!下载来学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

27

帖子

1

粉丝