• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机程序问题

电子WWW 2019-04-17 浏览量:997

两个一模一样的代码,一个能用,一个不能用,和例程写的一样,甚至直接把例程粘贴过来,自己写的就是不能用,为什么会这样?已经把代码删的只剩main.c了,还是自己的不能用,两个一样的代码,但是汇编有点不同,不知道什么原因,为什么自己的就是不能用呢?

31.png32.png33.png34.png35.png

36.png

37.png

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 人眼所看到的的代码一样,并不能代表真的完全一样,因为有些不可显示字符是人眼看不到的,有可能会隐藏在代码中,最常见的情况是在代码中出现的中文的空格符号,这个是很难用眼睛看出来的,但是对于编译器来说确实错误的。如果要确保段代码完全一致,可以使用文本比较工具进行比较,查看具体差异在哪里,这种工具有很多,比如ultracompare或者Notepad++中的compare组件都可以实现该功能。

    01.png

    • 发布于 2019-04-17
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:8
  • 不要多想,肯定有一个代码有问题。

    下载个软件 Beyond Compare 软件

    将你的两个工程程序进行比对,不一样的地方会自动标红。

    11.jpg

    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 2
    • 0

  • 启动代码对比一下,还有就是编译器一些配置看下,比如宏定义,代码优化等级,芯片型号等等
    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为你没有给出两个具体的代码,所以不好评判。

    不过一个比较常用的方法,就是直接比较两个文件,找出差异。

    在代码编写时初学者很容易出现的问题有:

    1. 没有注意大小写

    2. 没有注意标点符号,特别是用中文输入法写注释时,因为输入法的切换,很容易造成写入了中文标点,甚至全角数字符号

    3. 没有注意引号、括号的配对使用

    这些如果程序需要编译,一般会在编译出错信息中给予提示的。


    对于这样的问题,你其实给出具体两份代码,有经验的人很容易看出问题来。


    对于汇编,比较容易出错的就是地址给的不准确,毕竟那么多位数,很容易犯错的,所以程序编辑器设置等宽字体等等,采用好的编写规范,容易看出问题来。

    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 可能的情况有:

    代码还是有不一样的地方,只是你没有发现

    工程的配置不一样,是不是某些参数的配置不一样,比如优化等级。


    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 这里的相同要进行更细的对比才可以确认吧,如果硬件一样,代码结果不一样,那么一定是有代码不同,可能是一个变量或是一个符号的问题,比较难发现
    • 发布于2019-04-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以使用文本比较工具你也可以设置断点一步一步进行调试如果在哪执行不同在进行比较有时只是哪点细节不同要仔细观察可以使用notepad++里面的标记工具在进行比较

  • 这种情况最好在硬件环境下面仿真一下,看卡在哪一步不能运行

    此外,这里所谓的代码一样,有可能某些细节的实现上面还是存在不同,建议用专门的代码对比工具对比一下

  • 如果硬件是一样的,最好是仿真一下,看看结果的差异是在哪部分代码中产生的,再仔细对比相关的代码。感觉还是有可能是代码中的一些小的不容易发现的bug吧

相关问题

问题达人换一批

单片机程序问题