recvdata.c
来自「PS/2接口转矩阵键盘,51单片机编程实现」· C语言 代码 · 共 84 行
C
84 行
#include "recvdata.h"
unsigned char recvdata(void)
{
unsigned char datavalue=0,count=0,temp=1;
bit flag_checked=1,error=0;
if(keyclk==1)
{
return NORECVDATA;
}
/* wait keyclk to high */
while(!keyclk)
{
}
/* check keydata */
if(keydata)
{
return RECVERROR;
}
/* recv data */
datavalue=0;
temp=1;
flag_checked=1;
for(count=0;count<8;count++)
{
delay(4);
keyclk=0;
delay(8);
keyclk=1;
delay(4);
if(keydata)
{
datavalue=datavalue|(temp<<count);
flag_checked=!flag_checked;
}
}
/* recv checkparam */
delay(4);
keyclk=0;
delay(8);
keyclk=1;
delay(4);
if(keydata!=flag_checked)
{
error=1;
}
/* recv stop bit */
delay(4);
keyclk=0;
delay(8);
keyclk=1;
delay(4);
while(!keydata)
{
}
/* send ack */
delay(3);
keydata=0;
delay(1);
keyclk=0;
delay(8);
keyclk=1;
delay(1);
keydata=1;
delay(9);
if(error==1)
{
return RECVERROR;
}
return datavalue;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?