关于接线,

1-DATA(DI):信号流向从手柄到主机。此信号是一个8 bit的串行数据,同步传送于时钟下降沿(输入输出信号在时钟信号由高    到低时变化,所有信号的读取在时钟前沿到电平变化之前完成。)

2-CMD(DO):信号流向从主机到手柄。此信号和DATA相对,同样是一个8 bit的串行数据,同步传送于时钟下降沿。

程序:

我们可以使用SPI,也可以自己写驱动,软件模拟波形。

void PS2_Cmd(u8 CMD)
{
 volatile u16 ref=0x01;
 Data[1] = 0;
 for(ref=0x01;ref<0x0100;ref<<=1)
 {
  if(ref&CMD)
  {
   DO_H;                   //输出一位控制位
  }
  else DO_L;
  CLK_H;                        //时钟拉高
  DELAY_TIME;
  CLK_L;
  DELAY_TIME;
  CLK_H;                        //手动拉出一个下降沿使DO和DI得以同时传送
  if(DI)
   Data[1] = ref|Data[1];      //运用或运算按位存入Data[1]的8位
 }
 delay_us(16);
}