乐此不疲 发表于 2025-1-1 12:55:15

向各位请教一个变量大数组的定义问题【已解决】

我使用的单片机为STC8H8K64U-20引脚的D版芯片,程序中我想定义一个可以存放15000字节的数组(约14.6KB空间)并且可以随时修改数组中的数据内容,比如:
unsigned char date;不知道这个单片机是否可以使用这么大的数组或者说要怎样弄才行,请各位指点!

社区闲人 发表于 2025-1-1 14:30:29

换芯片,AI8051U有32K的xdata,随便折腾。

乐此不疲 发表于 2025-1-2 10:07:42

多谢各位的指点,明白了变量操作总是要在RAM中进行数组也是一样的,我原以为SRAM或许不同呢,再谢各位!!

乐此不疲 发表于 2025-1-18 15:12:28

社区闲人 发表于 2025-1-1 14:30
换芯片,AI8051U有32K的xdata,随便折腾。

@社区闲人 根据你的指点我换用擎天柱实验板做这个测试,但是使用超大变量数组的愿望仍然没能实现,我是在CPU 8-bit模式下用keil uv3编译做的实验,定义了数组u8 xdata date;但是数组可用范围应该不超过,后面的内容就见不到了,不知道还有哪里需要配置,希望能够指点一下或者推荐一个相关的例程。

王昱顺 发表于 2025-1-18 15:52:14

乐此不疲 发表于 2025-1-18 15:12
@社区闲人 根据你的指点我换用擎天柱实验板做这个测试,但是使用超大变量数组的愿望仍然没能实现,我是在 ...

可以使用这样的方式定义数组:
unsigned char xdata tmp = {0};

乐此不疲 发表于 2025-1-18 16:18:08

王昱顺 发表于 2025-1-18 15:52
可以使用这样的方式定义数组:
unsigned char xdata tmp = {0};
好的,我试一试,但是我的程序头文件中有定义(延用老版本STC头文件中的定义)typedefunsigned charu8;所以我用了u8来定义的数组,另外我每次调用这个数组时都进行一次数组的初始化,如下:
u16 i;
for(i=0;i<15000;i++)
{
date=0xff;
}
所差的是我这个数组不能清零,只能用1来填充来清除原有数据,这样符合后面的写屏显的操作。

乐此不疲 发表于 2025-1-19 21:19:14

乐此不疲 发表于 2025-1-18 16:18
好的,我试一试,但是我的程序头文件中有定义(延用老版本STC头文件中的定义)typedefunsigned charu8; ...

单片机好用,程序配置没问题,问题出在数组的应用函数,经过认真调试已经可以愉快的使用这款内存空间很大的单片机了,终于可以对400*300(15000字节像素)UC**系列驱动芯片的墨水屏进行全屏可编辑图片的局部刷新了,真的很爽!
页: [1]
查看完整版本: 向各位请教一个变量大数组的定义问题【已解决】