发新帖我要提问
12
返回列表
打印

18F的编译器有点癫狂??

[复制链接]
楼主: 将军令
手机看帖
扫描二维码
随时随地手机跟帖
21
yewuyi| | 2009-3-20 21:41 | 只看该作者 回帖奖励 |倒序浏览

TO LS

PICC为什么不能用SWITCH ???还是第一次听说有这个限制。。。


倒塌了,我程序里面都是用了大量的SWITCH,真不敢想象没有SWITCH的程序是什么样的。。。


另外,PICC也不是你说的有什么BUG把?PICC对函数指针支持不好,那是因为PIC16本身不太适合使用函数指针的原因,另外一个限制就是不要使用变量的绝对地址定位,如果非要用,尽量把这个变量绝对定位的RAM空间的后面,这是因为PICC不保留绝对定位的变量地址,如果不放在后面的话,可能形成变量地址覆盖。

我用了PICC805、950两个版本,还有一个960版本,但960版本一直还没用来做产品。。。

使用特权

评论回复
22
machunshui| | 2009-3-21 10:16 | 只看该作者

还真没发现PICC有什么bug

还真没发现PICC有什么bug,
编译器的BUG是不容易发现的,绝大部分是用户自己的问题.

不过楼主的这个问题很奇怪,代码感觉不会有什么问题,

这个问题比较难以发现,发现了调试一下,看看编译后的汇编代码,应该比较容易找到问题的根源.

等待楼主的答案...


使用特权

评论回复
23
李冬发| | 2009-3-21 12:16 | 只看该作者

PICC的SWITCH就是发现了问题的!你的东西可用不表明它没问题

使用特权

评论回复
24
yewuyi| | 2009-3-21 12:34 | 只看该作者

请冬发君明示SWITCH有什么问题?

使用特权

评论回复
25
soso| | 2009-3-21 15:20 | 只看该作者

都局限在对子函数本身的讨论

   你保证了你的工程里任何时刻对delay()的调用是唯一的么?这样的延时程序最好是做成可重入函数才保险。估计有些人没听说过可重入函数吧?再说,程序里有这样通过傻瓜数数的方式延时的设计,可以窥见程序员的基本功底的。

使用特权

评论回复
26
soso| | 2009-3-21 15:24 | 只看该作者

mcc18的内核是gcc

   估计我们的水平还不能达到怀疑gcc的程度。

使用特权

评论回复
27
wolfererer| | 2009-3-21 17:01 | 只看该作者

这算不算bug




芯片使用         pic16f877a

 运行环境         MPLAB 8.10

编译器              PICC9.60 PL0

程序如下:


#include <pic.h>

__CONFIG(HS & WDTEN & PWRTEN & BOREN & LVPDIS & DEBUGDIS & PROTECT);

void main()
{
     unsigned char array[2];
     array[0] = 0x44;
     array[1] = ~array[0];
     if(array[1] == (~array[0]))
            RB0 = 0; 
     else
            RB1 = 0;                       //程序跳到了这里    
}

这是为什么?

编译器Bug?

使用特权

评论回复
28
李冬发| | 2009-3-21 20:55 | 只看该作者

在switch语句里,msp430gcc有同样的问题!

使用特权

评论回复
29
sssbang| | 2009-3-22 22:19 | 只看该作者

ls说的我都不敢用switch

究竟是什么问题啊

使用特权

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

本版积分规则