完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
#include
#define uchar unsigned char #define uint unsigned int ***it dula=P2^6; ***it wela=P2^7; uchar disnum,temp,key,num; uchar code table_du[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0}; delay(uchar); uchar keyscan(); void main() { disnum=16; wela=1; P0=0XFE; wela=0; while(1) { num=keyscan(); P0=table_du[num]; dula=1; dula=0; } } uchar keyscan() { P3=0xf0; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; temp=temp|0X0f; //这行代码表示什么意思???? P3=temp; key=P3; switch(key) { case 0xee:disnum=0; break; case 0xde:disnum=1; break; case 0xbe:disnum=2; break; case 0x7e:disnum=3; break; case 0xed:disnum=4; break; case 0xdd:disnum=5; break; case 0xbd:disnum=6; break; case 0x7d:disnum=7; break; case 0xeb:disnum=8; break; case 0xdb:disnum=9; break; case 0xbb:disnum=10; break; case 0x7b:disnum=11; break; case 0xe7:disnum=12; break; case 0xd7:disnum=13; break; case 0xb7:disnum=14; break; case 0x77:disnum=15; break; } } } return disnum; } delay(uchar x) { uchar a,b; for(a=x;a>0;a--) for(b=200;b>0;b--); }
|
|
相关推荐
8 个讨论
|
|
|
uchar keyscan()
{ P3=0xf0; //先给P3赋一个初值 temp=P3; temp=temp&0xf0; if(temp!=0xf0) //如果有键按下temp!=0xf0成立 { delay(10); //延时消抖 if(temp!=0xf0) //再次判断有键按下temp!=0xf0成立 { temp=P3; //读取P3的值保存在temp temp=temp|0X0f; //temp保留高4位的值,低4位全置1 //这行代码表示什么意思???? P3=temp; //再把temp的值赋给P3,高4位不会变化,低4位会变化 key=P3; //此时读取P3的值就是高4位+低4位值,此值赋给key switch(key) { |
|
|
|
|
|
|
|
|
你理解的不准确 uchar keyscan() { P3=0xf0; //先给P3赋一个初值 1111 0000 temp=P3; //此句无实际意义,可以舍弃 temp=temp&0xf0; //此句无实际意义,可以舍弃 if(temp!=0xf0) //如果有键按下temp!=0xf0成立 XXXX 0000(高4位4个X中有1个为0其余为1) { delay(10); //延时消抖 if(temp!=0xf0) //再次判断有键按下temp!=0xf0成立 XXXX 0000 { temp=P3; //读取P3的值保存在temp XXXX 0000 temp=temp|0X0f; //temp保留高4位的值,低4位全置1 XXXX 1111 P3=temp; //再把temp的值赋给P3,高4位不会变化,低4位会变化 XXXX XXXX(低4位4个X中有1个为0其余为1) key=P3; //此时读取P3的值就是高4位+低4位值,此值赋给key switch(key) { |
|
|
|
|
|
|
|
|
给你一个比较好懂的写法 uchar keyscan() { uchar temp1,temp2,temp3;//临时变量 P3=0xf0; //先给P3赋一个初值,1111 0000 if(temp!=0xf0) //如果有键按下,假设1110 0000,执行花括号内语句, { delay(10); //延时消抖 if(temp!=0xf0) //再次判断有键按下,1110 0000 { temp1=P3; //读取P3实际值保存在temp1,1110 0000 P3=0x0f; //再给P3赋值0x0f,0000 1111 temp2=P3; //读取P3实际值保存在temp2,假设0000 1110 temp3=temp1|temp2;//temp3=1110 0000按位或0000 1110,结果是1110 1110 key=temp3; //把temp3值赋与key,1110 1110 switch(key) { ...... |
|
|
|
|
|
|
|
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
331 浏览 0 评论
532 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
842 浏览 0 评论
1383 浏览 2 评论
824 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16912 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 15:23 , Processed in 1.088223 second(s), Total 57, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
7432