key.h
来自「avr单片机键盘扫描程序」· C头文件 代码 · 共 76 行
H
76 行
/************************************************************
功能:通用矩阵扫描式键盘
设计:cht
设计时间:2007/11/22
MCU: MEGA16
修改时间:2007/11/22
说明:
*************************************************************/
#ifndef KEY_H
#define KEY_H
#include <avr/io.h>
#include "avr_m16.h"
/*----------------------------------------
通用函数
------------------------------------------*/
uint8_t key_scan(void); //键盘扫描
/*----------------------------------------
uint8_t key_scan(void)
说明:键盘扫描
PA7,PA6 为输入(行)
PA5,PA4 为输出(列)
1 2
3 4
------------------------------------------*/
uint8_t key_scan(void)
{
uint8_t key_code;
PORTA=0B11110000;
DDRA=0B00110000;
key_code=5;
//第一列
PORTA&=~_BV(PA4);
PORTA|=_BV(PA5);
if ((PINA&0B01000000)==0)
{
_delay_ms(10);
if ((PINA&0B01000000)==0)
key_code=1;
}
if ((PINA&0B10000000)==0)
{
_delay_ms(10);
if ((PINA&0B10000000)==0)
key_code=3;
}
//第二列
PORTA&=~_BV(PA5);
PORTA|=_BV(PA4);
if ((PINA&0B01000000)==0)
{
_delay_ms(10);
if ((PINA&0B01000000)==0)
key_code=2;
}
if ((PINA&0B10000000)==0)
{
_delay_ms(10);
if ((PINA&0B10000000)==0)
key_code=4;
}
return key_code;
}
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?