使用SDCC 3.0.0。 编译此代码
#include < pic16f84.h>
void main(void) {
TRISA0=0;
RA0=1;
}
并收到这些警告。
/usr/share/sdcc/include/pic/pic16f84.h:101:警告182:sfr'INDF'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:101:警告182:sfr'INDF'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:102:警告182:sfr'TMR0'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:102:警告182:sfr'TMR0'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:103:警告182:sfr'PCL'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:103:警告182:sfr'PCL'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:104:警告182:sfr'STATUS'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:104:警告182:sfr'STATUS'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:105:警告182:sfr'FSR'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:105:警告182:sfr'FSR'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:106:警告182:sfr'PORTA'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:106:警告182:sfr'PORTA'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:107:警告182:sfr'PORTB'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:107:警告182:sfr'PORTB'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:108:警告182:sfr'EDEDATA'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:108:警告182:sfr'EDEDATA'的绝对地址 可能超出了范围。
/usr/share/sdcc/include/pic/pic16f84.h:109:警告182:sfr'EEADR'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:109:警告182:sfr'EEADR'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:110:警告182:sfr'PCLATH'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:110:警告182:sfr'PCLATH'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:111:警告182:sfr'INTCON'的绝对地址可能超出范围。
/usr/share/sdcc/include/pic/pic16f84.h:111:警告182:sfr'INTCON'的绝对地址可能超出范围。
?ASlink-Warning-未定义全局'_TRISA_bits'由模块'test'引用
?模块'test'引用的ASlink-Warning-Undefined Global'_PORTA_bits'
任何人都可以帮我理解这些警告吗? 我应该关心吗?
答案 0 :(得分:1)
免责声明:我从未参与过PIC
我的猜测是编译器检测到分配给这些变量的地址(sfr的 - “特殊功能寄存器”)不在处理器的预期存储器映射内。 sfr语法看起来像__sfr __at (0x80) P0;
这是将寄存器变量赋值给特定地址。警告说这些地址似乎无效。
许多嵌入式编译器工具链包含某种“链接映射”命令文件,该文件告诉链接器在哪些物理地址中放置代码和数据。 This SDCC user's guide表示您可以使用“.lkr”文件。 (见第68页)。确保这对于您的特定处理器是正确的。
此外,该手册说明选择pic的正确标志是-mpic16
。您确定-p16f86
选项是否正确?