找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1747|回复: 8
收起左侧

为什么这个单片机矩阵按键程序开机默认为0

[复制链接]
ID:616666 发表于 2020-3-21 22:00 | 显示全部楼层 |阅读模式
50黑币
这个矩阵按键程序为什么默认为0?程序没有哪一条讲有默认为0?

main_页面_1.jpg
main_页面_2.jpg
回复

使用道具 举报

ID:687694 发表于 2020-3-22 17:36 | 显示全部楼层
GPIO_KEY=0x0f是说P1口,高4位(P1.7,P1.6,P1.5,P1.4)为0,低4位为1,GPIO_KEY=0xf0时候正好相反,直接对端口寄存器赋值使对应端口置位。
回复

使用道具 举报

ID:616666 发表于 2020-3-22 19:20 | 显示全部楼层
lovexulu 发表于 2020-3-22 17:36
GPIO_KEY=0x0f是说P1口,高4位(P1.7,P1.6,P1.5,P1.4)为0,低4位为1,GPIO_KEY=0xf0时候正好相反,直接对 ...

开机初始时,显示屏显0,GPIO_KEY没有检测到按按键,程序中也没有写开机初始时KeyValue=0,所以是什么原因初始时显示屏显0?
回复

使用道具 举报

ID:699855 发表于 2020-3-23 12:49 来自手机 | 显示全部楼层
机子单 发表于 2020-3-22 19:20
开机初始时,显示屏显0,GPIO_KEY没有检测到按按键,程序中也没有写开机初始时KeyValue=0,所以是什么原 ...

keyvalue默认是0
回复

使用道具 举报

ID:191511 发表于 2020-3-23 14:27 | 显示全部楼层
编译器在编译的时候,会把没有给初始值的变量给默认值0,也就是即便你没有做初始化,它还是会显示0,而0正好是第一个按键的键值。
简单的办法就是在编码表里增加一个元素,给这个元素幅值为你想要没有按键按下时显示的内容的编码,给变量初始化为这个元素的下标。

评分

参与人数 1黑币 +9 收起 理由
机子单 + 9

查看全部评分

回复

使用道具 举报

ID:602576 发表于 2020-3-23 15:01 | 显示全部楼层
部分变量没赋初始值造成
回复

使用道具 举报

ID:697917 发表于 2020-3-23 17:46 | 显示全部楼层
keyvalue定义时未赋值,默认是0。 如果按其他键后,应该就非0了,除非再次按下0键

评分

参与人数 1黑币 +6 收起 理由
机子单 + 6

查看全部评分

回复

使用道具 举报

ID:687694 发表于 2020-3-23 18:33 | 显示全部楼层
机子单 发表于 2020-3-22 19:20
开机初始时,显示屏显0,GPIO_KEY没有检测到按按键,程序中也没有写开机初始时KeyValue=0,所以是什么原 ...

原来你问的这个,编译器会吧没有赋值的变量默认赋值为0,在你程序中如果没有按键按下,则最后面一句给端口赋值时返回数组成员第一个,也就是数组[0],你应该在swich中添加default:选项。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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