单片机驱动标准PC机键盘的C51程序 功能:实现pc机键盘(p/s2接口)与8位单片机连接使用 原理:键盘时钟接在p3.2口,既8051的外部中断int0上,键盘数据接到p1.0上 每次按键,键盘会向单片机发脉冲使单片机发生外部中断,数据有p1.0口一位一位传进 来 传回的数据格式为:1位开始位(0),8位数据位(所按按键的通码,用来识别按键), 1位 校验位(奇校验) 1位结束位(1) 实现:将键盘发回的数据放到一个缓冲区里(数组),当按键结束后发生内部中断来处 理所 按的按键 缺点:由于51单片机的容量有限所以缓冲区不可以开的太大,这就导致可以记录键盘的 按键 次数过少, 也就是容错性一般。不过如果正常使用键盘是不会出错的 ============================================================================ ==== ====================*///#include"reg51.h" #include "intrins.h" #include "ku.h" //按键通码与ascii对照表 sbit sda= p1^0; //键盘数据线unsigned char dat=0,dat1=0,dat2=0; //接收 键盘 数据变量? 存储通码变量 接受连续通码变量 unsigned char count=0,num=9,temp[5],shu=0; //中数次数 中断控制变量 缓冲区数组 缓 冲区指针 unsigned char key=0; //按键最终值void zhongduan() interrupt 0 //外部中 断 0 用来接受键盘发来的数据 { dat>>=1; //接受数据 低->高 if(sda) dat|=0x80; count++; if(count==num……