标题: 关于C语言数组导致我oled不再点亮的问题 [打印本页]

作者: qaqrbt    时间: 2023-5-26 16:02
标题: 关于C语言数组导致我oled不再点亮的问题
我正在通过51单片机在oled上画直线,可一旦我定义了oled_RAM[128][8]数组,然后我的oled就不亮了,之前写的多级菜单也没作用了,此外我已经更改target里的memory model为large了。我不知道是否与我定义的引脚有关,还是其他原因?

1.png (54.96 KB, 下载次数: 32)

1.png

2.png (17.34 KB, 下载次数: 29)

2.png

作者: munuc_w    时间: 2023-5-26 16:17
选用的CPU的RAM是多大的?注意空间。
作者: qaqrbt    时间: 2023-5-26 16:50
确实如2楼所说,我使用的是stc89c52rc,ram是8*128,更改memory model之后数全到xdata了,导致oled显示不出来,不过在画点的时候又出现了卡顿(没啥反应)的现象,我在想想吧
作者: yzwzfyz    时间: 2023-5-26 16:59
先查一下芯片的内存配置。
作者: 188610329    时间: 2023-5-26 19:33
qaqrbt 发表于 2023-5-26 16:50
确实如2楼所说,我使用的是stc89c52rc,ram是8*128,更改memory model之后数全到xdata了,导致oled显示不出 ...

你到底看过手册么? 你哪来的自信 stc89c52rc  RAM 是 8x128 的?
所有  STC89xxxxxxRC  RAM 只有 512,  其中 XDATA 只有 256
只有 STC89xxxxxxRD 才有 1024 的 XDATA
作者: qaqrbt    时间: 2023-5-26 20:59
5楼说的对,抱歉之前一直没有看数据手册,我为我无知道歉,非常感谢五楼对我的指正
作者: zctwss321    时间: 2023-6-23 15:38
yzwzfyz 发表于 2023-5-26 16:59
先查一下芯片的内存配置。

我的用   STC12C5A60S2内部集成RAM 1280字节,其中 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024     也是出现了这个问题,  非常奇怪啊 ,  uchar displayRAM[8][127]或者uchar displayRAM[7][128]都没问题, 就是 uchar displayRAM[8][128] 会出现问题.....无解的存在,  按理说RAM是足够用了啊
作者: zctwss321    时间: 2023-6-23 15:39
munuc_w 发表于 2023-5-26 16:17
选用的CPU的RAM是多大的?注意空间。

我的用   STC12C5A60S2内部集成RAM 1280字节,其中 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024     也是出现了这个问题,  非常奇怪啊 ,  uchar displayRAM[8][127]或者uchar displayRAM[7][128]都没问题, 就是 uchar displayRAM[8][128] 会出现问题.....无解的存在,  按理说RAM是足够用了啊
作者: Hephaestus    时间: 2023-6-23 16:46
zctwss321 发表于 2023-6-23 15:38
我的用   STC12C5A60S2内部集成RAM 1280字节渲� 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024 ...

你查编译生成的m51文件,数组显然越界了。
作者: npn    时间: 2023-6-23 20:40
用unsigned char xdata指针检测下XRAM容量,数组越界会导致其他变量值异常修改。
作者: 188610329    时间: 2023-6-23 22:23
zctwss321 发表于 2023-6-23 15:38
我的用   STC12C5A60S2内部集成RAM 1280字节,其中 内部RAM (data):256 Byte 内部扩展RAM (xdata):1024 ...

你肯定 KEIL 里面用 large 了,你要用 Small 然后 uchar xdata  displayRAM[8][128]; 才行




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