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

📄 keyboard.c

📁 这是本人初学C51时编写并成功完成调试的第一个较大的C程序,里面包含有双单片机通信键盘描扫电子音乐等内容
💻 C
字号:
#include <hardware.h>

extern void delay10ms();
extern unsigned char point;

#define KEY_NULL   100;


unsigned char  keypoint;

extern unsigned char code key[8][11]=//钯盘分值表
	{
		{0x0a,0x0f,0x02,0x11,0x03,0x00,0x0d,0x04,0x12,0x06,0x01},
		{0x0a,0x0f,0x02,0x11,0x03,0x00,0x0d,0x04,0x12,0x06,0x01},
		{0x0a,0x0f,0x02,0x11,0x03,0x00,0x0d,0x04,0x12,0x06,0x01},
		{0x0a,0x0f,0x02,0x11,0x03,0x00,0x0d,0x04,0x12,0x06,0x01},
		{0x0b,0x08,0x10,0x07,0x13,0x32,0x0e,0x09,0x0c,0x05,0x14},
		{0x0b,0x08,0x10,0x07,0x13,0x32,0x0e,0x09,0x0c,0x05,0x14},
		{0x0b,0x08,0x10,0x07,0x13,0x32,0x00,0x09,0x0c,0x05,0x14},
		{0x0b,0x08,0x10,0x07,0x13,0x32,0x00,0x09,0x0c,0x05,0x14}
	};

unsigned char keyboard();

unsigned char keyboard()
{
	unsigned char row;
	unsigned char mask;
	unsigned char multiple[8]={1,3,1,2,1,3,1,2};//8个倍区
//	KEY_OUT_PORT=0x00;
	P1=0x00;
	if(KEY_IN0_PORT&KEY_IN1_PORT&KEY_IN2_PORT&KEY_IN3_PORT&KEY_IN4_PORT
	  &KEY_IN5_PORT&KEY_IN6_PORT&KEY_IN7_PORT&KEY_IN8_PORT&KEY_IN9_PORT&
	  KEY_IN10_PORT)
//	{
//		delay10ms();//去抖
//		if(KEY_IN0_PORT&KEY_IN1_PORT&KEY_IN2_PORT&KEY_IN3_PORT&KEY_IN4_PORT
//	  	   &KEY_IN5_PORT&KEY_IN6_PORT&KEY_IN7_PORT&KEY_IN8_PORT&KEY_IN9_PORT&
//	  	   KEY_IN10_PORT)
		return KEY_NULL;//返回空按键
	//else 
	//	return KEY_DOWN;
//	}

	for(row=0,mask=0x01;row<8; row++,mask<<=1)
	{
		P1=~mask;
	
		if(KEY_IN0_PORT==0)       {delay10ms();if(KEY_IN0_PORT==0)  return (keypoint=multiple[row]*key[row][0]);} 
		else if(KEY_IN1_PORT==0)  {delay10ms();if(KEY_IN1_PORT==0)  return (keypoint=multiple[row]*key[row][1]);} 
		else if(KEY_IN2_PORT==0)  {delay10ms();if(KEY_IN2_PORT==0)  return (keypoint=multiple[row]*key[row][2]);} 
		else if(KEY_IN3_PORT==0)  {delay10ms();if(KEY_IN3_PORT==0)  return (keypoint=multiple[row]*key[row][3]);} 
		else if(KEY_IN4_PORT==0)  {delay10ms();if(KEY_IN4_PORT==0)  return (keypoint=multiple[row]*key[row][4]);} 
		else if(KEY_IN5_PORT==0)  {delay10ms();if(KEY_IN5_PORT==0)  return (keypoint=multiple[row]*key[row][5]);} 
		else if(KEY_IN6_PORT==0)  {delay10ms();if(KEY_IN6_PORT==0)  return (keypoint=multiple[row]*key[row][6]);} 
		else if(KEY_IN7_PORT==0)  {delay10ms();if(KEY_IN7_PORT==0)  return (keypoint=multiple[row]*key[row][7]);} 
		else if(KEY_IN8_PORT==0)  {delay10ms();if(KEY_IN8_PORT==0)  return (keypoint=multiple[row]*key[row][8]);} 
		else if(KEY_IN9_PORT==0)  {delay10ms();if(KEY_IN9_PORT==0)  return (keypoint=multiple[row]*key[row][9]);} 
		else if(KEY_IN10_PORT==0) {delay10ms();if(KEY_IN10_PORT==0) return (keypoint=multiple[row]*key[row][10]);} 
	}
	return KEY_NULL;
}
/*
unsigned int result()
{
	//unsigned char i,j;
	unsigned char multiple[8]={1,3,1,2,1,3,1,2};//8个倍区
//	unsigned int point;
	numpoint=multiple[row]*keyboard();//分数=倍数乘以键值
	return(numpoint);
}*/

⌨️ 快捷键说明

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