打印
[技术问答]

这个是N76E003单片机芯片的问题?还是编译器的问题?

[复制链接]
2389|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Kelan|  楼主 | 2018-2-24 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
欣慰N76E003可以代替stm8s003(仅硬件引脚基本兼容), 今天简单验证了一下。
但发现一个问题:
U8型的 i 打印是错误的,但长整型 U16的 m 和double浮点型的 k 却是打印正常的。
具体,可看下面的视频。
这个是N76E003单片机芯片的问题?还是编译器的问题?暂时没时间看编译后的汇编代码,留个大家思考。。
备注: 使用的是Keil 工公司的最新C51编译器 9.57版本(评估板),不过旧些的9.54版本也一样。
希望keil公司能看到,呵呵。 估计多数是编译器或printf 的bug。

优酷视频地址:
http://v.youku.com/v_show/id_XMz ... j.8428770.3416059.1
沙发
mintspring| | 2018-2-24 16:10 | 只看该作者
还真是的,你把初值设置为1,试试看。

使用特权

评论回复
板凳
mintspring| | 2018-2-24 16:11 | 只看该作者
是不是只有为0的时候错误
如果是,或者都错误,那么就是编译器本身毛病。

使用特权

评论回复
地板
mintspring| | 2018-2-24 16:12 | 只看该作者
另外还有一个,就是你用的是i++;
你修改成i=i+1;
看看,我看你其他用的是+1;

使用特权

评论回复
5
Kelan|  楼主 | 2018-2-24 16:48 | 只看该作者
mintspring 发表于 2018-2-24 16:12
另外还有一个,就是你用的是i++;
你修改成i=i+1;
看看,我看你其他用的是+1; ...

新年好!

i++ 和 i = i+1, 我刚刚对比测试了,是一样的结果。
另外,如果让i = 1 开始,测试结果也是不对的,第一个值竟然是: 256

使用特权

评论回复
6
mintspring| | 2018-2-24 17:13 | 只看该作者
看来是编译器问题

使用特权

评论回复
7
天灵灵地灵灵| | 2018-2-24 18:08 | 只看该作者
如果不用printf这个函数是不是不会有问题,比如打印时候你使用至强转换命令操作一下再打印,看看有没有问题。

使用特权

评论回复
8
天灵灵地灵灵| | 2018-2-24 18:09 | 只看该作者
如果没有问题,那么大家可以继续再讨论问题具体在哪儿

使用特权

评论回复
9
xinxianshi| | 2018-2-26 17:46 | 只看该作者
貌似printf都是编译器提供的,呵呵了。

使用特权

评论回复
10
yiy| | 2018-2-26 19:18 | 只看该作者
那就从设计上避免这些,毕竟软件上可以解决的,坚决追求性价比。

使用特权

评论回复
11
dongnanxibei| | 2018-2-26 21:18 | 只看该作者
单片机一般不会用这个printf的,实际应用中是不会的。

使用特权

评论回复
12
dongnanxibei| | 2018-2-26 21:18 | 只看该作者
调试的时候才会用,所以不影响你的项目。

使用特权

评论回复
13
稳稳の幸福| | 2018-2-26 21:30 | 只看该作者
他们看不到的,呵呵,他们才不管我们这些盗版用户呢。说不定也是个防盗呢?

使用特权

评论回复
14
稳稳の幸福| | 2018-2-26 21:30 | 只看该作者
估计花钱买的应该可以解决。

使用特权

评论回复
15
caijie001| | 2018-2-26 23:01 | 只看该作者
6666这都发现了,不打印是正常值吧》?

使用特权

评论回复
16
wahahaheihei| | 2018-2-27 13:35 | 只看该作者
肯定是编译器问题,你实现这些都是编译器在处理。

使用特权

评论回复
17
wahahaheihei| | 2018-2-27 13:35 | 只看该作者
或者别用printf串口打印,直接输出到LED数码管试试看。

使用特权

评论回复
18
wahahaheihei| | 2018-2-27 13:36 | 只看该作者
如果正确,那就是软件printf函数问题,这就是编译器或者提供的printf库函数造成的。

使用特权

评论回复
19
wahahaheihei| | 2018-2-27 13:36 | 只看该作者
stdio.h头文件里的问题。

使用特权

评论回复
20
Kelan|  楼主 | 2018-2-27 13:47 | 只看该作者
wahahaheihei 发表于 2018-2-27 13:35
或者别用printf串口打印,直接输出到LED数码管试试看。

我今天尝试了另外一个很新的STC单片机,STC8F系列的,执行结果也一样。确定是printf的BUG, 大家避开这个坑吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

759

帖子

7

粉丝