找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1267|回复: 5
收起左侧

菜鸟求助C51单片机位存储区问题

[复制链接]
ID:42969 发表于 2020-8-3 18:56 | 显示全部楼层 |阅读模式
    求助各位大神,我的一个小程序中定义了4个字节位寻址寄存器,程序正常(图1),可是一但定义第5个字节,程序就报错(图2)。理论上用bdata定义的可位寻址寄存器最多可以定义16个字节,占用20~2F地址,算上头文件中sbit定义的也应该不满128位啊.求助求助!

图1程序正常

图1程序正常

图2程序报错

图2程序报错
回复

使用道具 举报

ID:804115 发表于 2020-8-4 09:51 | 显示全部楼层
看一下你的map文件,看看不同的变量都是占多大空间的。
回复

使用道具 举报

ID:805376 发表于 2020-8-4 12:03 | 显示全部楼层
应该是够的
在变量定义的时候后面加上flag _at_ 0x20/flag _at_ 0x21这些试试
我怀疑可能是程序的其他部分有占用
回复

使用道具 举报

ID:42969 发表于 2020-8-4 13:07 | 显示全部楼层
本帖最后由 btxzilong 于 2020-8-4 13:09 编辑
disorder 发表于 2020-8-4 12:03
应该是够的
在变量定义的时候后面加上flag _at_ 0x20/flag _at_ 0x21这些试试
我怀疑可能是程序的其他部 ...

多谢,查出来了,源程序定义了太多的全局变量,不管是增加位寻址的 还是其他的变量 都会报错。半路出家做单片机,要学的太多了。
回复

使用道具 举报

ID:42969 发表于 2020-8-4 13:08 | 显示全部楼层
1692483014 发表于 2020-8-4 09:51
看一下你的map文件,看看不同的变量都是占多大空间的。

我是半路出家学C的,map文件找了半天也没找到
回复

使用道具 举报

ID:42969 发表于 2020-8-4 13:13 | 显示全部楼层
disorder 发表于 2020-8-4 12:03
应该是够的
在变量定义的时候后面加上flag _at_ 0x20/flag _at_ 0x21这些试试
我怀疑可能是程序的其他部 ...

    多谢,查到了原因,是全局变量定义太多了,所以不管是定义位寻址的 还是其他的 都会报错。半路出家要学的太多了。
    我用的是STC89和90的芯片,定义全局变量最多能多大地址?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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