谁敢说“精通PIC单片机”的朋友请进,这个问题我就不信只有我一个人遇到?????

2020-02-09 09:31发布

大家好!我在用PICC编绎器的时候遇到一个问题!就是自动变量只能存放在bank0中,而存放在bank1~3中在编绎时就会出错。而bank1~3只能存放静态变量。我的程序很简单。以下图1为PICC编绎的错误提示,而图2是MPLAB中带自的C编绎中的提示,虽然没有提示,但是就出现在一个警告。
#include <pic.h>
void main(void)
{
        bank1 char i;//为什么这里编绎会出错,但是改为“char i;”就没有错了。
    i=12;
    while(1);
}


图1 (原文件名:错误提示.JPG)


图2 (原文件名:MPLAB自带C编绎器中也会警告.JPG)


更可笑的是,我在
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4373781&bbs_page_no=1&search_mode=3&search_text=lgh050706&bbs_id=9999

http://pic16.com/bbs/dispbbs.asp?boardid=24&Id=54463

发了一个帖子,竟然没有人有正面的回答,只不是表明这个问题只有我遇到,而大家就从来没有遇到啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
29条回答
AWEN2000
1楼-- · 2020-02-11 07:51
 精彩回答 2  元偷偷看……
javenreal
2楼-- · 2020-02-11 09:03
回复【13楼】AWEN2000  
pic变态!
-----------------------------------------------------------------------

完全同意!

一个函数代码太多了也不行,编译出错,要分成几个函数。

定数大的数组缓冲区也不行,要定义成几个小的,自己在代码里组合分解。

使用的大端格式,和PC以及现有的主流单片机相反,代码移植麻烦。

指针也有好多讲究,难。。。
zwdxsky
3楼-- · 2020-02-11 10:37
不记得在哪里看的了,bank1,bank2,bank3只能放全局变量(不记得是不是包括静态变量,请高手释疑),不能放局部变量。张明峰书中有两句“picc把所有函数内部定义的auto型局部变量放在bank0”“既然所有的局部变量将占用bank0的存储空间”可以证明。请高手指正。。。

(原文件名:41MH`4Y630}E~77QKH)P@%6.jpg)
lgh050706
4楼-- · 2020-02-11 15:46
回复【11楼】boming
乱操心,有必需这样研究吗?
-----------------------------------------------------------------------

前辈!你的意思是不是说:“不管什么情况都不用考虑到bank的问题是吗”。如果你是这种心态的话用PICC会出现很多麻烦的!
millwood0
5楼-- · 2020-02-11 16:54
first of all, you should avoid anything 9.7x - that is an extremely buggy version of the compiler. try something else, earlier non-OCG versions, particularly the standard version, are better.

2ndly, later PICC compilers don't require the bank modifier. that's true for compilers as early as 9.60 and potentially earlier.

3rdly, always read the compiler manual.
jianchangd
6楼-- · 2020-02-11 18:47
 精彩回答 2  元偷偷看……

一周热门 更多>