标题: 单片机按键按下无作用 [打印本页]

作者: 3rd    时间: 2021-3-30 21:08
标题: 单片机按键按下无作用
C51单片机的程序,按钮接线如图,如果单独定义sbit key0=P1^4,sbit key1=P1^5等等,能进行操控,如果直接定义P1口,进行与运算,P1&0x0f,理论上也能判断输入的是哪个按键啊,为什么会失效?!

a.png (8.46 KB, 下载次数: 43)

接线

接线

作者: OHHO    时间: 2021-3-30 22:18
不建议这么接线,按钮没按下的时候引脚电平是悬空的,仿真还行,实物有出问题的可能
至于代码具体的,能把您的程序发上来大家看看吗  
从目前信息推测是P1&0x0f写错了,4-7位为高字节,把这几位信息直接清空了,应为P1&0xf0。
作者: zsw3721    时间: 2021-3-30 22:21
想法非常不错。不过要写成P1&=0xF0; 因为你用的是高4位作为按键输入,所以与上0xF0实际上保留了高4位的状态,并将低4位进行清零。
作者: 3rd    时间: 2021-3-30 23:07
OHHO 发表于 2021-3-30 22:18
不建议这么接线,按钮没按下的时候引脚电平是悬空的,仿真还行,实物有出问题的可能
至于代码具体的,能把 ...

感谢解答,我明天在仿真里试试,今天直接用sbit定义了,写完了程序
作者: 3rd    时间: 2021-3-30 23:08
zsw3721 发表于 2021-3-30 22:21
想法非常不错。不过要写成P1&=0xF0; 因为你用的是高4位作为按键输入,所以与上0xF0实际上保留了高4位的状态 ...

感谢解答,我用sbit的方法写了程序,能正确完成指令,明天试试你说的,非常感谢
作者: Estein    时间: 2021-3-30 23:41
如果这么接线需要初始管脚,防止出错。另外你这么与会清空高位状态,应当用P1&0xF0;获取
作者: xianfajushi    时间: 2021-3-31 08:44
如果没做其他使用是可以用判断整个IO组的值,但电路图中明显有IO做他用,这样就无法准确判断了.
作者: taotie    时间: 2021-3-31 10:39
要学会用程序员计算器验证
作者: kxcuser    时间: 2021-3-31 11:16
单步执行看下数据的变化
作者: 湖南    时间: 2021-4-14 23:45
代码出现问题了吧





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1