#include "global.h" #include "key.h" #include "menu.h" char key; unsigned char nkey; char keycol; char keyrow; char keytimer; char flagkeydown; char flagkeyvalid; char flagkeyunprocessed; //当前按键有Flag unsigned char keyline[] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF}; #define keyscanline P2OUT #define keyNotPressed() (P2IN & 0xe0) == 0xE0 #define getkeycol() (P2IN & 0xe0) void InitKey(){ //按键处理初期化 P2SEL = 0x00; P2DIR = 0x1F; P2OUT = 0xFF; P2REN = 0x00; //拉功能禁止 P2DS = 0x00; P2IE = 0x00; //中断禁止 keytimer = 0; } unsigned char keyscan(){ unsigned char keytemp = 0xFF; if(keyNotPressed()){ keytimer ++; if(keytimer > 4) keytimer = 0; keyscanline = keyline[keytimer]; return 0xFF; } switch(getkeycol()){ case 0x60: keytemp = 2; break; case 0xA0: keytemp = 1; break; case 0xC0: keytemp = 0; break; } keytemp += keytimer * 3; switch(keytemp){ case 0: return KEY_1; // case 1: return KEY_4; // case 2: return KEY_7; // case 3: return KEY_2; // case 4: return KEY_5; // case 5: return KEY_8; // case 6: return KEY_3; // case 7: return KEY_6; // case 8: return KEY_9; // case 9: return KEY_UP; // case 10: return KEY_0; // case 11: return KEY_DOWN; // case 12: return KEY_BACK; // case 13: return KEY_CLEAR; // case 14: return KEY_OK; // default: break; } return 0xFF; //return 0xFF有什么用? } void Get_key(){ //获得键值 unsigned char keytemp; keytemp = keyscan(); if(keytemp >= 0x0F){ //如果当前键值在0x0F以上 nkey = 0xFF; //前回键值 flagkeydown = 0; flagkeyvalid = 0; flagkeyunprocessed = 0; //当前按键有Flag CLR return; } if(keytemp != nkey){ flagkeydown = 1; nkey = keytemp; return; } if(flagkeyvalid == 0){ key = nkey; if(key != KEY_BACK){ back_menuflag = 0; } flagkeyvalid = 1; flagkeyunprocessed = 1; //当前按键有Flag SET } } 连接图是这样的。完全看不懂程序到底什么意思。这应该属于独立按键吧,是用来模拟成3*4的矩形按键码?
您需要 登录 才可以下载或查看,没有账号?注册
举报
416356084 发表于 2016-9-30 09:37 自己都说了3X4,还独立按键,也是没有谁了
dirtwillfly 发表于 2016-9-30 10:21 不知道从哪里copy来的程序吧
李小川希比 发表于 2016-9-30 11:20 嗯,公司上个项目的程序,才到公司不久,表示看不懂!
416356084 发表于 2016-9-30 11:39 你现在想干什么?
李小川希比 发表于 2016-9-30 14:51 公司设备要改进,需要修改部分程序
jyrpxj 发表于 2016-10-7 12:18 一个按键扫描的程序也看不懂,也是没谁了
lrqzsu 发表于 2016-10-8 15:33 是一个3*5的按键阵列,扫描法,没看懂?那百度一下按键扫描法的基本流程。。。 ...
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
发帖类勋章
时间类勋章
等级类勋章
15
84
2
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号