📄 key.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 + -