完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下面这段代码中的红框内,两句理解不了。
请大侠帮忙解惑,谢谢! 对于这段代码我的理解是: 复位之后,keyr[3:0]值是1111, 而keyr <= {keyr[2:0],key};后,keyr的值是1-1-1-key. 如果有键按下去,那么keyr的值是1110. 而keyr[2],keyr[3],一直都是1, 所以~keyr[2] & keyr[3]和keyr[2] & ~keyr[3]一直都是0. key值( keyr[0])的变化对 key_neg和key_pos的值,没有影响。 我不知道,哪里有问题,谢谢
|
|
相关推荐
4个回答
|
|
平时1,一旦有按键,keyr就会置零,那&的结果就变了,不过写的有点繁琐,我当时看这个程序给简化了,按下和松开好像弄成一个,一年了,我给忘了怎么改的
|
|
|
|
首先明确一点,在红框代码中取反运算符~的优先级最高。代码里你对移位的理解是正确的。
常态,keyr=1111;此时,key_neg= 0与1 =0,key_pos= 1与0 =0. 按下,keyr=1110/1100/1000/0000;此时,key_neg= 1与1 =1,key_pos= 0与x =0. 松开,keyr=0001/0011/0111/1111;此时,key_neg= 1与0 或者 0与x =0,key_pos= 1与1 =1. //------------- 至于程序是否要合并,看个人编码习惯。总之,代码越简单越容易理解。 |
|
|
|
reset 后 keyr=1111
每个ext_clk_25m的上升沿会进行位移:把keyr低3位和key=1 的值写到 keyr key_neg 只要是keyr的最高位是0 就会判断按下 key_pos 在keyr最高位是0,keyr[2]是1,就会判断释放 这样应该不怎么消抖吧 用连续几个位判断会不会好一点 |
|
|
|
学习了,谢谢分享!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1851 浏览 1 评论
1590 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1810 浏览 0 评论
968 浏览 0 评论
2586 浏览 0 评论
1596 浏览 41 评论
5819 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 02:26 , Processed in 0.674498 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号