加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Proteus中RAM问题

(2016-07-19 14:40:06)
分类: [01]单片机
在利用Proteus进行单片机仿真时,有时会出现RAM的问题:

1.在proteus中51单片机有AT89C52,标注8kB code, 256B data,表示8kB的代码存储区,256字节的数据存储区

2.在KEIL,51编译环境中,在Memory Model 中有三个选项:
1.Small → 变了存储在内部RAM
2.Compact → 存储外部,8位间接寻址
3.Large → 存储外部,16位间接寻址

问题:
在Keil中选择单片机型号时,如果选择了AT89C52单片机,你会发现,上面写着 8K Bytes Flash Memory, 128Bytes On-chip RAM, 表明数据存储空间RAM共128个字节,当你的程序数据空间超过128字节时,就会发现编译失败,如果是第一次遇到这个问题,你可能看不出来,因为没有提示哪里error,
此时有两中解决方法,一是换单片机,同一类型的只是数据RAM增大了,比如AT89C55。 
二是将Memory Model 中的small改成large,因为现在很多单片机都有片外RAM,比如最常用的STC89C52单片机,它的RAM有512B,其中256B是片内,256是片外,可用关键字xdata进行变量修饰。
如果采用方法一,修改片内RAM,编译通过后再仿真,不会出现任何问题
如果采用方法二,改用片外RAM,因为在proteus中AT89C52不具备片外RAM,所以,虽然你程序编译通过了,但是当仿真时仍会失败。

仿真通常用来检验原理,做实物才是最重要的,当然我还是很喜欢仿真。。。。。。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有