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

📄 2x8_key.c

📁 WINAVR写的2x8键盘扫描程序
💻 C
字号:
/*---------------------------------------
2X8键盘扫描程序
M16的PA5~PA7接74HC138的A.B.C输入端,74HC138的输出端接键盘的8列
M16的PC6.PC7接键盘的2行
用定时器0定时中断来进行键盘扫描,返回键值,不能多键同时按,不能长按
-----------------------------------------*/
//定义MCU与按键的接口
#include <avr/io.h>
#include "2X8_key.h"
#include "type.h"

#define key_SEL_PORT    PORTA
#define key_SEL_DDR     DDRA
#define key_PORT        PORTC
#define key_DDR         DDRC
#define key_PIN         PINC

#define key_SELA        PA5   //portA5
#define key_SELB        PA6   //portA6
#define key_SELC        PA7   //portA7
#define key_KIN0        PC6   //portC6
#define key_KIN1        PC7   //portC7


/*----------------------------------------------------------
key_init :按键相关端口初始化函数
输入参数 :无
输出参数 :无
作者     :ken
日期     :2007-08-15
--------------------------------------------------------------*/
void key_init(void)
{
  key_SEL_DDR|=((1<<key_SELA)|(1<<key_SELB)|(1<<key_SELC));      //设置为输出
  key_SEL_PORT&=~(1<<key_SELA);
	key_SEL_PORT&=~(1<<key_SELB);
	key_SEL_PORT&=~(1<<key_SELC);
	key_PORT|=((1<<key_KIN0)|(1<<key_KIN1));                       //设置内部上拉电阻
  key_DDR&=~(1<<key_KIN0);                                        //设置为输入  
	key_DDR&=~(1<<key_KIN1);
}


/*-------------------------------------------------------------------
key :按键扫描函数
输入参数 :无
输出参数 :键码
作者     :ken
日期     :2007-08-15
---------------------------------------------------------------*/
unsigned char key(void)
{
  unsigned char row;                         //col表示行,row表示列
  for(row=0;row<8;row++)
  {
    key_SEL_PORT&=0x1f;                       
    key_SEL_PORT|=(row<<5);                  //把row值送到高3位

		if((key_PIN&(1<<key_KIN1))==0)           //第二行有按键按下
		{
		  return(10+row);                        //返回第二行键值10-17
		}
    
		if((key_PIN&(1<<key_KIN0))==0)           //第一行有按键按下
    {
		  return(row);                           //返回第一行键值00-07
		}		
	
	}
	return(9);
}		

⌨️ 快捷键说明

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