⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recvdata.c

📁 PS/2接口转矩阵键盘,51单片机编程实现
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -