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

📄 main.c

📁 基于ARM的按键测试开发.很实用也很普遍.
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <uart.h>
#include <max7219.h>

#define  P_KEY   P1

void delay(int time)
{
	int i;
	for (i=0; i<time; i++)
	{
		;
	}
}





char FindKey()
{
	char key = -1, i;

	P_KEY = 0x0f;
	key   = P_KEY;


	if (key == 0x0f)
	{
		return -1;
	}

	delay(5000);

	
	key = P_KEY;
	if (key == 0x0f)
	{
		return -1;
	}

	for (i=0; i<4; i++)
	{
		P_KEY = ~(1 << (i + 4));

		key   = P_KEY;

		key   = key & 0x0f;
		if (key == 0x0f)
		{
			continue;
		}

		if (key == 0x0e)
		{
		 	key = i + 0 * 4;
		}
		else if (key == 0x0d)
		{
			key = i + 1 * 4;
		}
		else if (key == 0x0b)
		{
			key = i + 2 * 4;
		}
		else if (key == 0x07)
		{
			key = i + 3 * 4;
		}
		P_KEY = 0x0f;
		while( (P_KEY != 0x0f));
		break;

	}
	return key;

}


/*
unsigned char FindKey()
{
	unsigned char key, temp;

	P_KEY = 0x0f;
	key   = P_KEY;
	if (key == 0x0f)
	{
		return 0;
	}
	delay(5000);
	
	key = P_KEY;
	if (key == 0x0f)
	{
		return 0;
	}


	temp = (key >> 4);
	
    if (temp >= 4)
	{
		if (temp == 4)
		{
			temp = 3;
		}
		else
		{
			temp = 4;
		}
	}

    
	P_KEY = 0xf0;
    
	key = P_KEY;
    
	key = key & 0x0f;

    if (key >= 4)
	{
		if (key == 4)
		{
			key = 3;
		}
		else
		{
			key = 4;
		}
	}



	key = (key - 1) * 4 + temp;
	
	P_KEY = 0x0f;
	while( P_KEY != 0x0f);
	return key;


}
*/

char buf[20];
sbit P20 = P2^0;


unsigned char code ascii[11]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0F};


void main(void)
{
   int key;

   int i;


   uart_init();
   InitialMax7219();

   for (i=0; i<8; i++)
   {
   		WriteToMax7219(i + 1, ascii[i]&0x7f);
   }

 
   while(1)
   {

   		key = FindKey();
		if (key >= 0)
		{
        	sprintf(buf, "Key = %d  \n", key);
			SendStr(buf);
 		}
   }
  

}

⌨️ 快捷键说明

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