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

📄 key.c

📁 ATMEGA16使用8×8矩阵键盘的源码
💻 C
字号:
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <stdint.h>

uint8_t getkey(void);
const uint8_t keyVAL[] PROGMEM={0x1e,0x1d,0x1b,0x17,0x2e,0x2d,0x2b,0x27,
                             0x4e,0x4d,0x4b,0x47,0x8e,0x8d,0x8b,0x87
                            };

uint8_t getkey(void)
   {
   	uint8_t key_tmp,key_tmp1=1,i;
   	key_tmp=PIND;
   	key_tmp&=0x0f;
   	if(key_tmp==0x0f) key_tmp1=0;
   	else
   		  {
   		  	_delay_ms(20);
   		  	key_tmp=PIND;
   	        key_tmp&=0x0f;
   	        if(key_tmp==0x0f) key_tmp1=0;
   	        else
   	      	  {
   	      	  	DDRD=0x00;
   	      	  	key_tmp1=PIND;
   	      	  	key_tmp1=PIND;
				key_tmp1=PIND;
		
   	      	  	key_tmp1&=0xf0;
   	      	  	key_tmp|=key_tmp1;
   	      	  	for(key_tmp1=1;key_tmp1<=16;key_tmp1++)
   	      	  	   {
				    i=pgm_read_byte(keyVAL+key_tmp1-1);
   	      	  	   	if(key_tmp==i) break;
   	      	  	   }
   	      	  	if(key_tmp1==17) key_tmp1=0;
   	      	  }
   	    }
	 DDRD=0xf0;
	 PORTD=0x00;
   	 return key_tmp1;
   }

⌨️ 快捷键说明

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