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

📄 key.c~

📁 UCOS-II ATMEGA128 移殖
💻 C~
字号:
#include <mega128.h>

//void init_kb(void);
//void decode(unsigned char);
/*
*********************************************************************************************
*				按键扫描 
* Ver   : 1.00		
* Date  : 2003.03	
* By    : Danli
* Date	: 2003.04
***********************************************************************************************
*/

/********************************************************************************************/
//			按键扫描
//Function:用于中断
//	(1)First:
//     	ADMUX = ADC_KEY_CHANNEL;
//	(2)
//	key_scan()  
//注意:
//	必须配合特殊的扫描方式
//	1,2,3....16 main adc + key adc start + key adc end & get
/********************************************************************************************/

unsigned int key_timer;
unsigned char KEY_value;
bit F_KEY_OK;
bit F_KEY_1REL;               
bit F_KEY_1IN;

void key_scan(unsigned int key_adc_value)
{      
       	if (key_adc_value > 100)
       	{                     
       	       	//需要求高低温和容差!!!	
       		if ( (100 < key_adc_value) && ( key_adc_value < 200) )
       			KEY_value = 0x01;             		                             	                   	     
       		else if ( ( 200 < key_adc_value) && ( key_adc_value < 300))
               		KEY_value = 0x02;        
      		else if ( ( 300 < key_adc_value) && ( key_adc_value < 450))
        		KEY_value = 0x03;
      		else if ( (400 < key_adc_value) && ( key_adc_value < 550))
        		KEY_value = 0x04; 
      		else if ( key_adc_value > 550) 
        		KEY_value = 0x05;  
        		
		// new key in key press 
         	if( !F_KEY_1IN )	//|| ( KEY_value != key_last_value ) )
         	{
         		//key_last_value = KEY_value ;
                       	F_KEY_1IN = 1; 
                       	F_KEY_OK=1;
         	}          

        	//key press keep
	        else if( ++key_timer >= 100 && ( key_timer % 10 ==0 ) )
	        {
              		F_KEY_OK=1;
            	}
	}
         
        //key realease                
        else 
        {
        	if(F_KEY_1REL)
            	{
            		F_KEY_1REL=0;
                	F_KEY_1IN=0;
            	}
            
          	else
          	{       
          		key_timer=0;
          		F_KEY_1REL=1;
          	}
        }
} 

/*
*****************************************************************************
*            PC键盘处理
*
*
*****************************************************************************
*/

// Unshifted characters
/*flash unsigned char unshifted[][2] = {
0x0d,9,		0x0e,'|',		0x15,'q',		0x16,'1',		0x1a,'z',
0x1b,'s',	0x1c,'a',		0x1d,'w',		0x1e,'2',		0x21,'c',
0x22,'x',	0x23,'d',		0x24,'e',		0x25,'4',		0x26,'3',
0x29,' ',	0x2a,'v',		0x2b,'f',		0x2c,'t',		0x2d,'r',
0x2e,'5',	0x31,'n',		0x32,'b',		0x33,'h',		0x34,'g',
0x35,'y',	0x36,'6',		0x39,',',		0x3a,'m',		0x3b,'j',
0x3c,'u',	0x3d,'7',		0x3e,'8',		0x41,',',		0x42,'k',
0x43,'i',	0x44,'o',		0x45,'0',		0x46,'9',		0x49,'.',
0x4a,'-',	0x4b,'l',		0x4c,'

⌨️ 快捷键说明

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