英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3590|回复: 0
打印 上一主题 下一主题

如何找回16F877A"消失"的RAM?

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-28 16:08:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
用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编译通不过。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 06:30 , Processed in 0.052290 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表