PS2接口协议解析及应用
的设计进行编码,同时调用发送程序并通过ps/2口发送到工控pc。此时模拟开关关闭相应通道(将p0.2置1),专用键盘接入工控pc ps/2口的时钟线和数据线而工作,但标准键盘被模拟开关从ps/2的时钟线和数据线中断而不工作,这样,双键盘便可时分复用同一个工控pc机的ps/2 口。相应的发送子程序如下:
#define DATA p00 用p0.0做数据线
#define CLK p01 用p0.1做时钟线
#define INHIbit p02 用p0.2做CD4052的INH端
#define PORTR p1 用P1口做读入口
#define PORTW p2 用P2口做写出口 可以实现64个自定义键
void send(uchar x) /* function for send a char data*/
{
uchar i,temp,char_temp;
bit flag_check =1;
INHIBIT =1; //disable standard keyboard
delay_ms(3);
temp = x;
for( i=0; i<8; i++) //find the number of 1 in this uchar x is odd or not
{
char_temp = temp & 0x01;
if(char_temp == 0x01)
{
flag_check =!flag_check;
}
temp = temp >>1;
}
CLK =1; //send 1 to P1 then read P1
while(!CLK) //if CLK is low wait
{
;
}