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

📄 senddata.c

📁 PS/2接口转矩阵键盘,51单片机编程实现
💻 C
字号:
#include "senddata.h"


void senddata(unsigned char keyvalue)
{
	unsigned char result = 1, checkcount = 0, sum = 0;
	bit flag_check=1;
	//delay(5000000);
	for(checkcount = 0; checkcount < 8; checkcount++)
	{
		if((keyvalue & result)!=0)
		{
			flag_check=!flag_check;
		}
		result = result << 1;
	}
	keyclk=1;keyclk1=1;
	/*
	if(!keyclk)
	{
	return;
	}
	*/
	//(1)检测时钟线电平,如果时钟线为低,则延时50μs;
step1:
	while(!keyclk)			//1) Wait for Clock = high.
	{
	}
//step2:
	delay_50us();				//2) Delay 50 microseconds.
	keyclk=1;keyclk1=1;		
	keydata=1;keydata1=1;
//step3:
	if(keyclk==1)			//3) Clock still = high? No--goto step 1
	{
		delay_20us();
	}
	else
	{
		goto step1;
	}
	if(keyclk==1&&keydata==1)
	{
		delay_20us();			// Delay 20 microseconds
		keydata=0;keydata1=0;	//1) Set/Reset Data
		delay_20us();			//2) Delay 20 microseconds
		keyclk=0;keyclk1=0;		//3) Bring Clock low
		delay_40us();			//4) Delay 40 microseconds
		keyclk=1;keyclk1=1;
		delay_20us();

		result=1;
		for(checkcount=0;checkcount<8;checkcount++)
		{
			if((keyvalue&result)!=0)
			{
				keydata=1;keydata1=1;
			}
			else
			{
				keydata=0;keydata1=0;
			}
			delay_20us();
			keyclk=0;keyclk1=0;
			delay_40us();
			result=result<<1;
			keyclk=1;keyclk1=1;
			delay_20us();
		}
//		keyclk=1;keyclk1=1;
//		delay(4);
		//parity bit
		keydata=flag_check;
		keydata1=flag_check;
		delay_20us();
		keyclk=0;keyclk1=0;
		delay_40us();
		keyclk=1;keyclk1=1;
		delay_20us();
		//stop bit
		keydata=1;keydata1=1;
		delay_20us();
		keyclk=0;keyclk1=0;
		delay_40us();
		keyclk=1;keyclk1=1;
		delay_20us();
		keyclk=1;keyclk1=1;
		keydata=1;keydata1=1;
		delay_20us();
	}
//	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -