打印

求达人指点PIC16单片机问题

[复制链接]
703|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
helloluodan|  楼主 | 2015-10-15 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pic16lf1503这个片子,编译时可以定义32位的变时,比如int,long,double等类型,但是片子工作起来时,发现32位变量运算是错误的。为什么呢?怎么解决呢?
沙发
helloluodan|  楼主 | 2015-10-15 17:41 | 只看该作者
贴段代码:
R_NTCR,Tcoor[]都是double 或float,或者*1000倍,转换成int,long型,判断都会出错。
Tcoor[0]的值是:4397.119;
    T_ntc=4;
    R_NTCR=4397.118;
   
    if(R_NTCR>=Tcoor[0])
    {
     T_ntc=1;
    }
    else if((R_NTCR<Tcoor[0])&&(R_NTCR>=Tcoor[33]))
    {
       T_ntc=2;
      
    }
    else
    {
       T_ntc=3;
    }

这段代码,片子工作时,选择语句判断出错,竟然执行到 T_ntc=1那句去了;

使用特权

评论回复
板凳
yklstudent| | 2015-10-15 19:00 | 只看该作者
你首先要研究好PIC和编译器,不然也只能自己在这边感到这奇怪那奇怪

使用特权

评论回复
地板
helloluodan|  楼主 | 2015-10-15 19:34 | 只看该作者
小孩问一大人:“1+2=几”
大家说:“你还是好好研究下数学吧!”
小孩说了一句:“你于多少你告诉我不就完了,用得着这样吗?”;

使用特权

评论回复
5
JY-DX-JY| | 2015-10-16 14:23 | 只看该作者
在观察窗口看一下变量的值。

使用特权

评论回复
6
NE5532| | 2015-10-16 14:42 | 只看该作者
大人说:我不能一辈子都陪着你告诉你答案啊。

楼主需要自己打断点观察变量的值,单片机不可能算错,编译器出问题的概率也很小,问题多半在你自己写了不规则代码或者没有了解到编译器的使用限制条件。

使用特权

评论回复
7
ayb_ice| | 2015-10-16 16:50 | 只看该作者
本帖最后由 ayb_ice 于 2015-10-16 16:51 编辑
helloluodan 发表于 2015-10-15 17:41
贴段代码:
R_NTCR,Tcoor[]都是double 或float,或者*1000倍,转换成int,long型,判断都会出错。
Tcoor[0] ...

浮点数最好不要比较等于,看这样子工作经验不多啊

使用特权

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

本版积分规则

7

主题

17

帖子

0

粉丝