登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

3K程序,如何从876迁到873?

作者:dfli 栏目:单片机
3K程序,如何从876迁到873?
使用PICC,近3K程序,从876迁到873,连接错,如何处理?
PIC16F876,
MEMORY Usage Map:

Program ROM   $0000 - $0853  $0854 (  2132) words
Program ROM   $0D80 - $0FFF  $0280 (   640) words
                             $0AD4 (  2772) words total Program ROM

Bank 0 RAM    $0020 - $0049  $002A (    42) bytes
Bank 0 RAM    $0070 - $007C  $000D (    13) bytes
                             $0037 (    55) bytes total Bank 0 RAM  

Bank 1 RAM    $00A0 - $00EA  $004B (    75) bytes total Bank 1 RAM  
Bank 2 RAM    $0110 - $0148  $0039 (    57) bytes total Bank 2 RAM  
Config Data   $2007 - $2007  $0001 (     1) words total Config Data


Program statistics:

Total ROM used     2772 words (33.8%)
Total RAM used      187 bytes (50.8%)

PIC16F873,
Executing: "C:\HT-PIC\bin\picc.exe" -E"tctrl.lde" "D:\SPR\tsoft\testhelp.obj" "D:\SPR\tsoft\aquisition.obj" "D:\SPR\tsoft\autocheck.obj" "D:\SPR\tsoft\delay.obj" "D:\SPR\tsoft\initsystem.obj" "D:\SPR\tsoft\innereeprom.obj" "D:\SPR\tsoft\isr.obj" "D:\SPR\tsoft\main.obj" "D:\SPR\tsoft\sms0601.obj" "D:\SPR\tsoft\tcontrol.obj" -M"tctrl.map" -O"tctrl.cof" -O"tctrl.hex" -Q -MPLAB -16F873
Warning[000]   : psect rbss_2 not specified in -p option (first appears in C:\HT-PIC\LIB\picrt412.obj)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x53E (0x502+60), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x552 (0x502+80), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x56A (0x502+104), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 24 : Fixup overflow in expression (loc 0x580 (0x580+0), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 26 : Fixup overflow in expression (loc 0x5F4 (0x5BE+54), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 28 : Fixup overflow in expression (loc 0x624 (0x5F6+46), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x650 (0x644+12), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x672 (0x644+46), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x68A (0x644+70), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x69A (0x694+6), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6A8 (0x694+20), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6B4 (0x694+32), size 1, VALUE 0x1F4)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6C6 (0x694+50), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6D0 (0x694+60), size 1, VALUE 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 35 : Fixup overflow in expression (loc 0x6EE (0x6E8+6), size 1, VALUE 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 35 : Fixup overflow in expression (loc 0x6FA (0x6E8+18), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 85 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 119 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EC)
Error[000] innereeprom.rlf 157 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EC)
Error[000] innereeprom.rlf 189 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EC)
Error[000] innereeprom.rlf 397 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 471 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 541 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 597 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 637 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 663 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EC)
Error[000] innereeprom.rlf 683 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EC)
Error[000] innereeprom.rlf 703 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1F4)
Error[000] innereeprom.rlf 731 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EC)
Error[000] innereeprom.rlf 745 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, VALUE 0x1EB)
Error[000] innereeprom.rlf 745 : Too many errors
BUILD FAILED: Thu Sep 21 15:51:56 2006

请高人指点!

2楼: >>参与讨论
anzhongxin
回复!
看看RAM吧,873的好像不够用!

3楼: >>参与讨论
martin
指针的问题
问题:我编译得到这样的错误信息“Fixup error referencing ...”或者“Fixup error in expression ...”。这是什么意思,我该怎么做来解决这个错误?

解答:简单地说,这代表连接器被指示要去调整(修正Fixup)一个对存储位置的引用,这个计算出来的地址可能不适合可用的空间,比如,对一个字节(8位)的引用,要求装入一个比0xFF大的值。

典型地,这通常发生在使用PICC编译器,指针没有被恰当声明的时候,我们看个例子:

bank2 CHAR ch;
CHAR *ptr;

ptr = &ch;  // fixup error

这里发生fixup error的原因是,“ptr”是bank0指针 - 它必须是指向bank2的指针才不会出错,如:

bank2 CHAR *ptr;(译者注:bank0指针的地址是8位的[FSR],它可指向bank0和bank1共256字节的空间;而bank2指针,地址是9位的[IRP+FSR],它可指向bank2和bank3的高地址256字节的空间。本例中,尝试让一个bank0指针“ptr”来指向位于bank2里的ch,显然,ch的地址长度是和bank0指针不匹配的)

* - 本贴最后修改时间:2006-9-22 11:49:45 修改者:martin

参与讨论
昵称:
讨论内容:
 
 
相关帖子
关于PIC12c508A的程序,向各位请教
有用过PIC18F2480 的ECAN的么,进来讨论一下
SPI写SSPBUF问题
有谁知道PIC16C01-ME哪里可以买到?
请教18F44j10 UART问题?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号