微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PS/2接口协议解析和应用

PS/2接口协议解析和应用

时间:01-03 来源:互联网 点击:

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; i8; 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
{
;
}
CLK =1;
DATA =1; //send 1 to P1 then read P1
if(CLK ==1)
{
delay_us(30);
}

if(CLK==1 DATA==1) //send data
{
DATA =0; //start bit 0
delay_us(10);
CLK =0;
delay_us(5);
TEMP =x;
for(i=0;i8;i++) //send 8 bits LSB first
{
CLK =1;
delay_us(5);
CHAR_TEMP = TEMP 0x01;
if ( CHAR_TEMP == 0x01)
{
DATA =1;
}
ELSE
{
DATA =0;
}
//DATA=(bit)(TEMP0x01);
//LSB
delay_us(10);
CLK = 0;
delay_us(5);
TEMP = TEMP>>1;
}
CLK = 1; //send check bit

delay_us(5);
DATA = flag_check;
delay_us(10);
CLK = 0;
delay_us(5);
CLK =1; //send stop bit
delay_us(5);
DATA =1;
dalay_us(10);
CLK = 0;
delay_us(5);
CLK =1;
delay_us(30);
CLK =1;
DATA =1 ; //send 1 to P1 then read P1
if(CLK ==1 DATA == 0)
{
return ; //pc is sending data to mcu,goto
//receiving function
}
INHIBIT = 0; //enable STANDARD KEYBOARD
}



5 结论

PS/2 接口协议是现在大多数键盘、鼠标与pc机通讯的标准协议。其中鼠标对pc机的通讯更为简单,只是传输数据的内容不一样而已。充分理解PS/2接口协议,可以帮助设计者自主开发一些工控机上的专用键盘等外设,并能够按照用户的要求开发出专用的多功能键盘。该工控机的双键盘设计目前已被某工控公司所采纳,并已作为组件加入到产品当中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top