原创 MCU向PS2键盘发送数据

2007-11-22 20:00 4392 5 5 分类: MCU/ 嵌入式
MCU向PS2键盘发送数据(2286字)hotpower[1次]2004-9-14 21:45:16
//MCU向PS2键盘发送数据
unsigned char  PS2SendData(unsigned char val)
{
unsigned char i;
unsigned int senddata;
  EX1 = 0;//关闭PS2键盘中断
  senddata = (unsigned int)val;//11位数据需占用2字节
  ACC = val;//取累加器以便得到奇偶位P(与PS2的奇校验相反)
  if (!P){//P=0 但PS2为奇校验
    senddata |= 0x0700;//加入停止位、奇偶位及待读确认位
  }
  else{
    senddata |= 0x0600;//加入停止位、奇偶位及待读确认位
  }
  ClrWdt();//喂狗(不能在循环中喂!)
  PS2CLOCK = 0;//拉低时钟
  for (i = 100; i > 0; i --);//拉低时钟100uS以上
  PS2DATA = 0;//拉低数据总线
  for(i = 11; i > 0; i--){//发送8位数据和1位奇偶位及停止位,读ACK
    PS2CLOCK = 1;//释放时钟
    while (PS2CLOCK);//等待PS2拉低时钟
    PS2DATA = senddata & 0x01;//取数据且发送出去(发送停止位及ACK时发'1')
    senddata >>= 1;//发送数据先低后高
    CY = PS2DATA;//读ACK信号,最后一次有效
    while (!PS2CLOCK);//等待PS2拉高时钟
  }
  if (CY) val = 0;//失败
  else val = 1;//成功
  EX1 = 1;//开中断
  return val;
}
http://www.daxia.com/bibis/lookgood.asp?lookid=2638
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条