开发工具:
文件大小: 88kb
下载次数: 0
上传时间: 2010-08-09
详细说明: c语言很容易学的,看了就知道了!!!/************************************************************* (key.c文件) 模块: 矩阵键盘 功能: 4*4(可扩展)矩阵键盘程序; 说明:使用8M系统时钟,扫描频率30hz,若没键按下则返回0xff; MCU: M128 F_CPU: 8000000hz 入口叁数: 无 返回值: g_key_value 按键值 设计日期:2009.4.12 作 者:李 瑜 备注: 端口:PB ; 如果你要进行扩展或移植,为了程序更适合你的平台你必需: (1)定义 max_row 键盘行数 max_col 键盘列数 (2)修改 port_init(); 端口初始化,定时器初始化函数 out_col(); 列扫函数 in_row(); 读取行值函数 (3)修改中断函数ISR(TIMER0_COMP_vect) ;的入口“TIMER0_COMP_vect” **************************************************************/ #include"key.h" //使用此模块应包含的头文件 /************************************************************* 全局变量定义区 **************************************************************/ volatile uint8_t g_key_value = 0xff; //存放键值 volatile uint8_t new_key; //记录前次按键键值 volatile uint8_t old_key; //记录本次按键 /**************************************************************** 函数: void port_init(void) 功能: 端口初始化,定时器初始化 入口参数:无 返回值: 无 备注: T/C0 定时器用于定时扫描键盘 函数调用: 无 *****************************************************************/ void port_init(void) { SREG |=0X80; //键盘端口初始化,开起内部上拉电阻,PB0--PB3输出,PB4--PB7输入 PORTB=0xff; DDRB=0xff; DDRB=0x0f; // T/C0初始化 TCCR0=0x0D; //内部时钟1024分频 CTC模式 TCNT0=0x00; OCR0=0x81; //装载计数上限值 TIMSK=0x02; //允许T/C0比较匹配中断 sei(); //开总中断 } /***************************************************************: 函数: ISR(TIMER0_COMP_vect) 功能: 调用键盘扫描函数读取键值并进行消抖处理 入口参数:无 返回值: 无 备注: 这是定时器T/C0比较匹配中断服务程序 函数调用: key_scan(); ***************************************************************/ ISR(TIMER0_COMP_vect) { new_key = key_scan(); //记录前次按键键值 if(new_key!=old_key) //若存在抖动 { old_key =new_key; //记录本次按键 } else { g_key_value = new_key; //不存在抖动,返回被按下的键值 } } /***************************************************************** 函数: void out_col(uint8_t i) 功能: 送列值 入口参数:列值 返回值: 无 备注: 无 函数调用: 无 ******************************************************************/ void out_col(uint8_t i) { PORTB=~(1<
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.