找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3647|回复: 9
收起左侧

单片机按键按下无作用

[复制链接]
ID:894470 发表于 2021-3-30 21:08 | 显示全部楼层 |阅读模式
C51单片机的程序,按钮接线如图,如果单独定义sbit key0=P1^4,sbit key1=P1^5等等,能进行操控,如果直接定义P1口,进行与运算,P1&0x0f,理论上也能判断输入的是哪个按键啊,为什么会失效?!

接线

接线
回复

使用道具 举报

ID:686782 发表于 2021-3-30 22:18 | 显示全部楼层
不建议这么接线,按钮没按下的时候引脚电平是悬空的,仿真还行,实物有出问题的可能
至于代码具体的,能把您的程序发上来大家看看吗  
从目前信息推测是P1&0x0f写错了,4-7位为高字节,把这几位信息直接清空了,应为P1&0xf0。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:702386 发表于 2021-3-30 22:21 | 显示全部楼层
想法非常不错。不过要写成P1&=0xF0; 因为你用的是高4位作为按键输入,所以与上0xF0实际上保留了高4位的状态,并将低4位进行清零。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:894470 发表于 2021-3-30 23:07 | 显示全部楼层
OHHO 发表于 2021-3-30 22:18
不建议这么接线,按钮没按下的时候引脚电平是悬空的,仿真还行,实物有出问题的可能
至于代码具体的,能把 ...

感谢解答,我明天在仿真里试试,今天直接用sbit定义了,写完了程序
回复

使用道具 举报

ID:894470 发表于 2021-3-30 23:08 | 显示全部楼层
zsw3721 发表于 2021-3-30 22:21
想法非常不错。不过要写成P1&=0xF0; 因为你用的是高4位作为按键输入,所以与上0xF0实际上保留了高4位的状态 ...

感谢解答,我用sbit的方法写了程序,能正确完成指令,明天试试你说的,非常感谢
回复

使用道具 举报

ID:843877 发表于 2021-3-30 23:41 | 显示全部楼层
如果这么接线需要初始管脚,防止出错。另外你这么与会清空高位状态,应当用P1&0xF0;获取

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:332444 发表于 2021-3-31 08:44 | 显示全部楼层
如果没做其他使用是可以用判断整个IO组的值,但电路图中明显有IO做他用,这样就无法准确判断了.

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:342822 发表于 2021-3-31 10:39 | 显示全部楼层
要学会用程序员计算器验证

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:136485 发表于 2021-3-31 11:16 | 显示全部楼层
单步执行看下数据的变化

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:280000 发表于 2021-4-14 23:45 | 显示全部楼层
代码出现问题了吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表