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

📄 keyboard.c

📁 本人用avr 单片机atmega128开发控制产品的源码。
💻 C
字号:
#include <iom128v.h>
#include <control.h>
#include <macros.h>

extern unsigned char key_status,key_time_start,key_time_value;
extern unsigned char power_on,password_check;		
extern unsigned char key_50ms,time_1val;
extern unsigned char time_15s,T_15s;
extern unsigned char power_off,keycount,power_off,power_to_off;
extern unsigned char ucMenuLayer;

//---------------------------------------------------------
// NAME:	key_scan()
// ENTRY:	void
// RETURN:  void
// FUNCTION:按键分析子程序
// MODIFY DATE :	2004.1.28
//--------------------------------------------------------
unsigned char key_in;
unsigned char key_scan( void  )
{
	static unsigned char key_count,key_first,key_second;
	unsigned char key_sts,key_sv;
	key_sts	= 0;
	WDR();		 
	if((key_status&0X1F)!=0X1F)
	{
		PORTC|=0X40;			   //LED_PORT=1;
		key_time_start=1;
		key_time_value=0;
	}
	if(key_time_value>10)
	{
		PORTC&=~0X40;	 //LED_PORT=0;
		key_time_start=0;
		key_time_value=0;
	}
	if( key_50ms )					//50ms software timer flag
	{
		key_50ms = 0;
		key_sv = (~key_status)&0x1f;
		//取键值
		if( key_sv!=key_first )
		{
			key_first = key_sv;	// save the new key status
			key_count = 0;
		}
		else if( key_first!=key_second )
		{
			key_sts  = key_first ^ key_second;
			key_sts &=key_first;
			key_second	= key_first;
			key_count	= 1;
			time_1val= 0;
		}
		else if( key_first>0 )
		{
			key_count++;
			if( (key_count>6) )
			{
				key_count	= 0;
				key_sts	= key_first;
			}
		}
	}
	if(key_sts!=0)
	{		   
		switch(key_sts)
		{
		case 1:			   
			spk_key(0x38);
			break;
		case 2:
			spk_key(0x39);
			break;
		case 4:
			spk_key(0x37);					  
			break;
		case 8:
			spk_key(0x35);
			break;
		case 16:
			spk_key(0x36);
			break;
		default:
			break;			 		
		}		
	}
	if((key_sts==4)&&(power_on)&&(!password_check))		
		power_off=1;		
	else
	{
		power_off=0;
		if((key_sts==1)||(key_sts==8))
			password_check=0;
	}
	if(key_sts==16)
		key_sts=3;	 
	key_in=key_sts;
	if(key_sts!=0)  
	{
		time_15s=0;
		T_15s=0;
	}
	else
	{
		if(T_15s)         
		{
			exit_from_menu_operation();
			T_15s=0;
			time_15s=0;
		}
	}     
	return ( key_sts );
}

⌨️ 快捷键说明

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