找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机C语言程序位置的不对,导致的意外问题

查看数: 2282 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-6-12 19:05

正文摘要:

这是个矩阵按键,按下任意一个按键,数码管显示从0-F的值。 单片机C语言源程序如下: #include<reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sb ...

回复

ID:428114 发表于 2022-6-13 17:52
// 执行下一次的扫描输出
        keyOut++;
        
       if(keyOut > 4)
       {
            keyOut = 0;
        }
=======================
这个是要给下一次扫描处理的吧?


    switch(keyOut)
   {
    ....
   }
====================
这个switch处理的是keyOut当前值


要先处理当前的,然后再考虑下一个,逻辑要清楚啊
ID:275826 发表于 2022-6-13 15:53
这个程序代码长,内存大,不好
ID:979299 发表于 2022-6-13 11:54
条件表达式语句,动作里面没有包括switchy语句,放到前后都没有作用。
这个格式是java语言写法吧
| 这个管道符在这里是按位或啊
ID:688692 发表于 2022-6-13 09:02
转成就成图看看

ID:213173 发表于 2022-6-13 06:05
xcopter 发表于 2022-6-12 19:17
为了方便格式化 阅读,我生成了代码的图片

发生错误的根本原因是代码错误,改变代码位置只是改变发生错误的矩阵行。
错误:if(keyOut > 4)
正确:if(keyOut >= 4) 或 if(keyOut > 3)

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

Powered by 单片机教程网

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