完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
k2加一,k3减一之前试过了,可以,但是要k1开的时候,k2、k3才能加一减一,这个没有做到,k1没开的时候,k2也会从零开始加一;现在我改了程序,出现别的问题(但是我懂得改回原先的样子),请问怎样才能k1开的时候k2加一、减一呢?
|
|
相关推荐
3个回答
|
|
//需要声明的变量
bit Switch=1; //开关机标志位 unsigned char num=0; //需要+-控制的变量 //此按键程序适合放在主程序中运行 void key_scan() { static bit key1_sign=0,key2_sign=0,key3_sign=0; //按键自锁标志 static unsigned char count1=0,count2=0,count3=0;//消抖计数变量 if(key1==0) //检测按键1如果按下为0 { count1++; //消抖计数 if(count1>=200) //消抖延时 { count1=200; //防止溢出 if(key1_sign==0) //按键自锁志为0 { key1_sign=1; //按键自锁志置1 Switch=~Switch; //开关机标志位取反 if(Switch==0) //如果开关机标志位为0 { //需要控制的内容 } else { //需要控制的内容 } } } } else { key1_sign=0; //按键自锁标志清0 count1=0; //消抖计数清0 } if(!key2&(!key2^Switch)) //检测按键2如果按下为0,开关机标志位为0 { count2++; //消抖计数 if(count2>=200) //消抖延时 { count2=200; //防止溢出 if(key2_sign==0) //按键自锁标志为0 { key2_sign=1; //按键自锁标志置1 if(num<8) //设置上限 num++; //其他需要控制的内容 } } } else { key2_sign=0; //按键自锁标志清0 count2=0; //消抖计数清0 } if(!key3&(!key3^Switch)) //检测按键3如果按下为0,开关机标志位为0 { count3++; //消抖计数 if(count3>=200) //消抖延时 { count3=200; //防止溢出 if(key3_sign==0) //按键自锁标志为0 { key3_sign=1; //按键自锁标志置1 if(num>0) //设置下限 num--; //其他需要控制的内容 } } } else { key3_sign=0; //按键自锁标志清0 count3=0; //消抖计数清0 } }
最佳答案
|
|
|
|
应该设一个变量来存储K1按下的状态,即开,关两个状态,也就是当这个变量代表关的时候,如果按下K1,就把这个变量改为代表开,再按下K1,则把这个变量改为代表关。
只有当这个变量为开的状态时,才去扫描K2,K3键。 |
|
|
|
哈,可以了,谢谢你 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
522 浏览 0 评论
656 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
978 浏览 0 评论
1042 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
735 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12045 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 14:08 , Processed in 0.514067 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号