英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
如何找回16F877A"消失"的RAM?
[打印本页]
作者:
winnie
时间:
2009-3-28 16:08
标题:
如何找回16F877A"消失"的RAM?
用16F877A开发程序(可以用ICD2 debug,好用啊),最后的产品用16F74。开始一切正常,随着程序的扩大,在编译时发现 用16F74编译通过,切换到16F877A后编译报错。*** Error 74 "E:main.c" Line 2695(0,1): Not enough RAM for all variables
16F877A的GPR(General Purpose Register)字节,而16F74的GPR为192字节,GPR多的反而会报错?
后来发现要在16F877A的定义部分 加入以下语句
#DEVICE *=16
将指针切换到到16位后,编译通过。
分析如下:
16F74的GPR分在bank0和bank1,所以只需要使用默认的8位指针即可寻址所有的GPR,共192字节。
而如果在16F877A上采用默认的8位指针,只能寻址bank0和bank1中的GPR,共176字节。
当程序需要的GPR数目介于176和192之间时,用16F74编译能通过而用16F877A编译通不过。
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2