📄 key.h
字号:
/*********************************************************************
目 的: 键盘扫描程序
目标系统: 基于AVR单片机+4行×7列 LinkKeyBoard实验板键盘
应用软件: GCCAVR
版 本: Version 2.0
圆版时间: 2006-09-25
开发人员: YESON
说 明: 若用于商业用途,请保留此段文字或注明代码来源
*********************************************************************/
#include "avr/io.h"
#include "CmmICC.H"
#define key_DDR DDRA
#define key_PORT PORTA
#define key_PIN PINA
#define key_DDR DDRA
#define key_PORT PORTA
#define key_PIN PINA
uint8 key; //全局变量,所有程序有效
void scankey()
{
delay50ms(1); //防抖延时函数,可以适当增加减少,改变按键反应时间
key_DDR = 0X01;
key_PORT = 0xFE;
delay50us(1);
if(key_PIN==0xFC)
key=1;
if(key_PIN==0xFA)
key=2;
if(key_PIN==0xF6)
key=3;
if(key_PIN==0xEE)
key=4;
if(key_PIN==0xDE)
key=5;
if(key_PIN==0xBE)
key=6;
if(key_PIN==0x7E)
key=7;
key_DDR = 0X02;
key_PORT = 0xFD;
delay50us(1);
if(key_PIN==0xF9)
key=8;
if(key_PIN==0xF5)
key=9;
if(key_PIN==0xED)
key=10;
if(key_PIN==0xDD)
key=11;
if(key_PIN==0xBD)
key=12;
if(key_PIN==0x7D)
key=13;
key_DDR = 0X04;
key_PORT = 0xFB;
delay50us(1);
if(key_PIN==0xF3)
key=14;
if(key_PIN==0xEB)
key=15;
if(key_PIN==0xDB)
key=16;
if(key_PIN==0xBB)
key=17;
if(key_PIN==0x7B)
key=18;
key_DDR = 0X08;
key_PORT = 0xF7;
delay50us(1);
if(key_PIN==0xE7)
key=19;
if(key_PIN==0xD7)
key=20;
if(key_PIN==0xB7)
key=21;
if(key_PIN==0x77)
key=22;
key_DDR = 0X10;
key_PORT = 0xEF;
delay50us(1);
if(key_PIN==0xCF)
key=23;
if(key_PIN==0xAF)
key=24;
if(key_PIN==0x6F)
key=25;
key_DDR = 0X20;
key_PORT = 0xDF;
delay50us(1);
if(key_PIN==0x9F)
key=26;
if(key_PIN==0x5F)
key=27;
key_DDR = 0X40;
key_PORT = 0xBF;
delay50us(1);
if(key_PIN==0x3F)
key=28;
delay50ms(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -