英锐恩单片机论坛,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