找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9459|回复: 14
打印 上一主题 下一主题
收起左侧

这段单片机代码,写成0x0f和0xf0的区别?

[复制链接]
跳转到指定楼层
楼主
ID:688901 发表于 2020-3-7 17:37 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
4×4矩阵键盘程序,检测哪个按键被按下?当写成0x0f的时候,会有一列按键无法使用,改成0xf0的时候就可以使用,请亲们帮忙分析一下原因

IMG_20200307_1751hei0.jpg (1.54 MB, 下载次数: 72)

IMG_20200307_1751hei0.jpg

IMG_20200307_173645.jpg (1.96 MB, 下载次数: 76)

IMG_20200307_173645.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:688901 发表于 2020-3-7 17:38 来自手机 | 只看该作者
第三列按键无法使用
回复

使用道具 举报

板凳
ID:704185 发表于 2020-3-7 18:16 | 只看该作者
0x0f 是十六进制显示,转化问二进制为0001000,所以第二行不显示
回复

使用道具 举报

地板
ID:688901 发表于 2020-3-7 18:41 来自手机 | 只看该作者
huangwb0113 发表于 2020-3-7 18:16
0x0f 是十六进制显示,转化问二进制为0001000,所以第二行不显示

不是00001000吧?是00001111
回复

使用道具 举报

5#
ID:275826 发表于 2020-3-7 18:45 | 只看该作者
写成0x0f和0xf0的区别:OX0f是读低4位,而0xf0是读高4位
回复

使用道具 举报

6#
ID:88256 发表于 2020-3-7 19:22 | 只看该作者
huangwb0113 发表于 2020-3-7 18:16
0x0f 是十六进制显示,转化问二进制为0001000,所以第二行不显示

0x0f的二进制是00001111好不好,你那二进制的是0x08
回复

使用道具 举报

7#
ID:704216 发表于 2020-3-7 19:28 | 只看该作者
如果式0x0f,检测这一行应该为P2=0xfe。
回复

使用道具 举报

8#
ID:88256 发表于 2020-3-7 19:30 | 只看该作者
你这没贴出完整的扫描程序,不好判断,不要截屏直接贴出程序吧
回复

使用道具 举报

9#
ID:688901 发表于 2020-3-7 19:44 来自手机 | 只看该作者
如果为0x0f,这第二列不会执行,如果为0 xf 0,则各列都可以使用,请大家分析一下原因,感谢感谢

IMG_20200307_194202.jpg (1.52 MB, 下载次数: 74)

IMG_20200307_194202.jpg

IMG_20200307_194233.jpg (1.43 MB, 下载次数: 82)

IMG_20200307_194233.jpg

IMG_20200307_194301.jpg (1.47 MB, 下载次数: 67)

IMG_20200307_194301.jpg
回复

使用道具 举报

10#
ID:688901 发表于 2020-3-7 19:46 来自手机 | 只看该作者
lihuailiang 发表于 2020-3-7 19:28
如果式0x0f,检测这一行应该为P2=0xfe。

用0xef为什么不行呢?请指教
回复

使用道具 举报

11#
ID:704232 发表于 2020-3-7 20:47 | 只看该作者
0XF0转化为二进制为1111 0000,此时P0.1,P0.1,P0.2,P0.3引脚对应0000为低电平,而另外4个引脚对应1111为高电平,当某一列被按下后,比如第一列(P2.4),那么P2.4引脚会被拉低为低电平,由此可以判断哪一列按下。接着用同样的方法扫描行。
回复

使用道具 举报

12#
ID:704232 发表于 2020-3-7 22:07 | 只看该作者
sunquanfeng 发表于 2020-3-7 19:46
用0xef为什么不行呢?请指教

0XEF为1110 1111,按键按下后只会被拉低,不会被拉高。
回复

使用道具 举报

13#
ID:688901 发表于 2020-3-7 23:46 来自手机 | 只看该作者
Sube 发表于 2020-3-7 20:47
0XF0转化为二进制为1111 0000,此时P0.1,P0.1,P0.2,P0.3引脚对应0000为低电平,而另外4个引脚对应1111为高 ...

判断是否有键按下,可否用0xf0,个人认为可以,但是用了就会出现第三列无法点亮,protues仿真没问题每列都可以点亮,上实验板就第三列不亮
回复

使用道具 举报

14#
ID:213173 发表于 2020-3-8 08:39 | 只看该作者
sunquanfeng 发表于 2020-3-7 23:46
判断是否有键按下,可否用0xf0,个人认为可以,但是用了就会出现第三列无法点亮,protues仿真没问题每列 ...

仿真正常实验板不正常的可能原因:
1.仿真图与实物图不一致
2.实验板上跳线、插针之类转换电路预置错误
回复

使用道具 举报

15#
ID:691449 发表于 2020-3-8 11:52 | 只看该作者
0xf0的二进制是11110000,0x0f的二进制是00001111,按键扫描会有点差别,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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