谁敢说“精通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条回答
lgh050706
1楼-- · 2020-02-11 18:53
回复【18楼】jianchangd
默认的变量是存在bank0的,但我试了一下picc是可以定义在其它bank的呀。如下:
bank1 uchar temp1;
void main(void)
{
bank2 uchar temp2;
temp1=0x00;
temp2=0;
trisa=0x00;
porta=0xff;
while(1);
}
我的程序编译成功。
loaded d:pic est.cof.
********** build successful! **********
-----------------------------------------------------------------------
你是用那个版本的PICC啊!我上面的是用8.05的。能上传一下你的那个版本吗!谢谢!
elecd
2楼-- · 2020-02-11 21:48
不知道你用的是PICC哪个版本的?我的PIC16系列是用的 MPLAB自带的PICC16然后加上PRO版本补丁,没有你说的问题。
我都是将全局变量让编译器自行分配,其他子程序变量放到其他bank中,从来没有发生你这样的问题。

包括PICC18 用的是PIC 45k20,里面bank是编译器自行管理,不用管分配到哪个BANK,但是如果你指定到自定义的bank 也不会有什么问题,只是编译出来的代码空间有所不同,是因为切换BANK代码的缘故。
elecd
3楼-- · 2020-02-12 02:06

(原文件名:捕获.JPG)

这是PICC18自行管理的 bank及指针,以前是人工指定的bank,一切工作正常。
楼主还是考虑你的PICC的破_解问题吧。或者换版本再测试
jianchangd
4楼-- · 2020-02-12 06:02
我用的是PICC9.71。你可到microchip网站上去下载。
lgh050706
5楼-- · 2020-02-12 09:06
 精彩回答 2  元偷偷看……
leafstamen
6楼-- · 2020-02-12 10:56
全局变量的时候bank1,在函数体内需要用到bank可也加static

一周热门 更多>