• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51单片机内存问题

Wyatt0007 2019-01-20 浏览量:1631
main.c(77): error C249: 'DATA': SEGMENT TOO LARGE编写程序时遇到这个问题,可是我只是把数组从unsigned char code改成unsigned char增么就有这个问题,是两种定义方式占用空间不用吗?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可能是你数组太大了,51的DATA空间满了,因为51的DATA空间只有128个字节,很少的。常数数组最好放在代码空间(CODE),这样就正常了
    • 发布于 2019-01-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • code是存储在rom的意思不能修改数据,你没加code就是存在ram,ram容量小所以不够用了
    • 发布于2019-01-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 51中code关键字是存在rom里面的,没有code就是存在ram即内部内存里面,而51的内部内存是很小的,自然就装不下了。

    • 发布于2019-01-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 前者有code修饰,数据是被定义在程序空间,即ROM中,后者则是分配在RAM中,数组超出了RAM空间的大小,所以出错。
    • 发布于2019-01-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是定义的空间太大了,需要修改编译器中的配置,你百度一下吧,忘了在那设置了,将配置的选项宣导最大就行了
    • 发布于2019-01-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 加code关键字是吧数据存储到代码段也就是ROM中标准的8051有4k不叫code是储存到RAM中有128K。
    • 发布于2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 可能是你自定义数组的问题,分配ROM出错
    • 发布于2019-01-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 加上那个code的意思就是将这个数组放在rom里面,否则是放在RAM里面
    • 发布于2019-02-11
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

51单片机内存问题