谁敢说“精通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

发了一个帖子,竟然没有人有正面的回答,只不是表明这个问题只有我遇到,而大家就从来没有遇到啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
30条回答
wmm20031015
2020-02-11 05:55
1、从PIC单片机的数据手册上可以知道程序是分页的,切换页面所使用到的寄存器在RAM每个BANK都是作映射,对于程序的换页并不需要进行BANK切换,是我记错了,原以为并非所有寄存器都有作映射,所以有切换BANK一说
2、程序分页限制了单个函数的大小,MAIN函数也是限制的,参见张明峰的《pic单片机入门与实战》11.6.1,单个函数、数组或表不能跨页,程序跨页调用也需要进行页切换。

一周热门 更多>