完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
请大家帮忙给看看,我这个矩阵键盘哪里有问题,不知道为啥,有时候要多按几下才会有反应,绝非键盘问题。
#include #define uchar unsigned char #define uint unsigned int uchar aa; uchar code ss[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e}; ***it FMQ=P1^5; ***it SMG1=P1^0; ***it SMG2=P1^1; ***it SMG3=P1^2; ***it SMG4=P1^3; void display(uchar aa); uchar keysun(); void delay(uint z); void main() { aa=0; SMG1=0; SMG2=0; SMG3=0; SMG4=0; while(1) { display(keysun()); } } void display(uchar aa) { P0=ss[aa]; } uchar keysun() { uchar key,temp; P2=0xfe; temp=P2; while(temp!=0xf0) { delay(1); temp=P2; while(temp!=0xf0) { switch(temp) { case 0xee: key=1; FMQ=0; break; case 0xde: key=2; FMQ=0; break; case 0xbe: key=3; FMQ=0; break; case 0x7e: key=4; FMQ=0; break; } while(temp!=0xf0) { delay(1); temp=P2; temp=temp&0xf0; } } FMQ=1; display(key); } return key; } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } |
|
相关推荐
3个回答
|
|
![]() ![]() 新手一个 case switch case 0xee: key=1; FMQ=0; break; 这三个不懂·······还有***it能不能弄点有实际意义的英文单词或者拼音·······还有那个uchar aa 你自己明白别人要看好久
|
|
|
|
|
|
很有可能就是扫描周期太长,在处理按键结果的过程比较长,其实你可以想一想,你的按键还可以简单很多,一加入while循环就有衍射出很多问题,尤其是代码很多的时候
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16899 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 21:54 , Processed in 0.573475 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4495