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

📄 key.c

📁 简单的键盘扫描程序。采用中断机制。加了个倒计时功能。
💻 C
字号:
#include<at89x51.h>
sbit START_COUNTER = P1^0;
sbit DIS_KEY_PAD = P1^1;
unsigned int KEY_ID = 0;
unsigned int OFCounter = 0;

void delay_ms(unsigned int count)
{
	int i,j;
	for(i= 0; i<=count; i++)
	{
		for(j=0;j<=120;j++)
		{;}
	}
}

void Key_Init(void)
{
	EX0 = 1;
}

void Counter_Init(void)
{
	TMOD = 0x10;
	TH1 = 0xC3;
	TL1 = 0x50;
}


void COUNTER_DOWN(void) interrupt 3 using 1
{
	ET1 = 0;
	OFCounter++;
	if(OFCounter == 20)
	{
		KEY_ID --;
		OFCounter = 0;
	}
	P0 = (KEY_ID / 10) * 16 + KEY_ID %10;

	if(KEY_ID == 0)
	{
		P1_2 = 0;
		return;
	}
	ET1 = 1;
}

void KEY_GET(void) interrupt 0 using 2
{
	EX0 = 0;
	P2 = 0xFF;

	P2_1 = 0;
	delay_ms(10);
	if(P2_4 == 0) KEY_ID = 5;
	if(P2_5 == 0) KEY_ID = 6;
	if(P2_6 == 0) KEY_ID = 7;
	if(P2_7 == 0) KEY_ID = 8;
	P2_1 = 1;

	P2_0 = 0;
	delay_ms(10);
	if(P2_4 == 0) KEY_ID = 1;
	if(P2_5 == 0) KEY_ID = 2;
	if(P2_6 == 0) KEY_ID = 3;
	if(P2_7 == 0) KEY_ID = 4; 
	P2_0 = 1;

	P2_2 = 0;
	delay_ms(10);
	if(P2_4 == 0) KEY_ID = 9;
	if(P2_5 == 0) KEY_ID = 10;
	if(P2_6 == 0) KEY_ID = 11;
	if(P2_7 == 0) KEY_ID = 12; 
	P2_2 = 1;

	P2_3 = 0;
	delay_ms(10);
	if(P2_4 == 0) KEY_ID = 13;
	if(P2_5 == 0) KEY_ID = 14;
	if(P2_6 == 0) KEY_ID = 15;
	if(P2_7 == 0) KEY_ID = 16; 
	P2_3 = 1;

	P0 = (KEY_ID / 10) * 16 + KEY_ID %10;
	delay_ms(50);
	P2 = 0xF0;
	EX0 = 1; 
}

main()
{
	Key_Init();

	P2 = 0xF0;
	P0 = 0x00;
	DIS_KEY_PAD = 0;
	EA = 1;
	
	while(START_COUNTER)
 	{}

	if(!START_COUNTER)
	{
		Counter_Init();
		TR1 = 1;
		ET1 = 1;
	}
	DIS_KEY_PAD = 1;
 	while(1)
	{}	
}

⌨️ 快捷键说明

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