PS/2接口协议解析和应用
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接口协议,可以帮助设计者自主开发一些工控机上的专用键盘等外设,并能够按照用户的要求开发出专用的多功能键盘。该工控机的双键盘设计目前已被某工控公司所采纳,并已作为组件加入到产品当中。
PS2接口协议 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)