标题: 菜鸟求助C51单片机位存储区问题 [打印本页]

作者: btxzilong    时间: 2020-8-3 18:56
标题: 菜鸟求助C51单片机位存储区问题
    求助各位大神,我的一个小程序中定义了4个字节位寻址寄存器,程序正常(图1),可是一但定义第5个字节,程序就报错(图2)。理论上用bdata定义的可位寻址寄存器最多可以定义16个字节,占用20~2F地址,算上头文件中sbit定义的也应该不满128位啊.求助求助!

图1.png (25.88 KB, 下载次数: 49)

图1程序正常

图1程序正常

图2.png (25.55 KB, 下载次数: 42)

图2程序报错

图2程序报错

作者: 1692483014    时间: 2020-8-4 09:51
看一下你的map文件,看看不同的变量都是占多大空间的。
作者: disorder    时间: 2020-8-4 12:03
应该是够的
在变量定义的时候后面加上flag _at_ 0x20/flag _at_ 0x21这些试试
我怀疑可能是程序的其他部分有占用
作者: btxzilong    时间: 2020-8-4 13:07
本帖最后由 btxzilong 于 2020-8-4 13:09 编辑
disorder 发表于 2020-8-4 12:03
应该是够的
在变量定义的时候后面加上flag _at_ 0x20/flag _at_ 0x21这些试试
我怀疑可能是程序的其他部 ...

多谢,查出来了,源程序定义了太多的全局变量,不管是增加位寻址的 还是其他的变量 都会报错。半路出家做单片机,要学的太多了。
作者: btxzilong    时间: 2020-8-4 13:08
1692483014 发表于 2020-8-4 09:51
看一下你的map文件,看看不同的变量都是占多大空间的。

我是半路出家学C的,map文件找了半天也没找到
作者: btxzilong    时间: 2020-8-4 13:13
disorder 发表于 2020-8-4 12:03
应该是够的
在变量定义的时候后面加上flag _at_ 0x20/flag _at_ 0x21这些试试
我怀疑可能是程序的其他部 ...

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1