找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8242|回复: 14
收起左侧

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

[复制链接]
ID:688901 发表于 2020-3-7 17:37 来自手机 | 显示全部楼层 |阅读模式
4×4矩阵键盘程序,检测哪个按键被按下?当写成0x0f的时候,会有一列按键无法使用,改成0xf0的时候就可以使用,请亲们帮忙分析一下原因
IMG_20200307_1751hei0.jpg
IMG_20200307_173645.jpg
回复

使用道具 举报

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
回复

使用道具 举报

ID:275826 发表于 2020-3-7 18:45 | 显示全部楼层
写成0x0f和0xf0的区别:OX0f是读低4位,而0xf0是读高4位
回复

使用道具 举报

ID:88256 发表于 2020-3-7 19:22 | 显示全部楼层
huangwb0113 发表于 2020-3-7 18:16
0x0f 是十六进制显示,转化问二进制为0001000,所以第二行不显示

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

使用道具 举报

ID:704216 发表于 2020-3-7 19:28 | 显示全部楼层
如果式0x0f,检测这一行应该为P2=0xfe。
回复

使用道具 举报

ID:88256 发表于 2020-3-7 19:30 | 显示全部楼层
你这没贴出完整的扫描程序,不好判断,不要截屏直接贴出程序吧
回复

使用道具 举报

ID:688901 发表于 2020-3-7 19:44 来自手机 | 显示全部楼层
如果为0x0f,这第二列不会执行,如果为0 xf 0,则各列都可以使用,请大家分析一下原因,感谢感谢
IMG_20200307_194202.jpg
IMG_20200307_194233.jpg
IMG_20200307_194301.jpg
回复

使用道具 举报

ID:688901 发表于 2020-3-7 19:46 来自手机 | 显示全部楼层
lihuailiang 发表于 2020-3-7 19:28
如果式0x0f,检测这一行应该为P2=0xfe。

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

使用道具 举报

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引脚会被拉低为低电平,由此可以判断哪一列按下。接着用同样的方法扫描行。
回复

使用道具 举报

ID:704232 发表于 2020-3-7 22:07 | 显示全部楼层
sunquanfeng 发表于 2020-3-7 19:46
用0xef为什么不行呢?请指教

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

使用道具 举报

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仿真没问题每列都可以点亮,上实验板就第三列不亮
回复

使用道具 举报

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

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

使用道具 举报

ID:691449 发表于 2020-3-8 11:52 | 显示全部楼层
0xf0的二进制是11110000,0x0f的二进制是00001111,按键扫描会有点差别,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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