bondxie3 发表于 2016-1-19 11:45:00

求助: STC单片机P2口有莫名的脉冲输出!

如题,单片机为STC12C5A60S2,使用2片ht1621驱动段式液晶,定义了一块缓存,27字节.
P2.1和P2.6驱动2片74hc595的RCK, 这些脉冲就影响了74hc595的输出.
使用了第2组DPTR,还是有脉冲输出.
放在idata的编译结果: Program Size: data=62.6 xdata=902 code=55754
放在xdata的编译结果: Program Size: data=35.6 xdata=929 code=58094
idata u8 g_LcdBuf;//正常
xdata u8 g_LcdBuf; //有脉冲输出

问题虽然能避开,但是没找到原因,心里总觉得不踏实.
期待各位大牛............

EMC菜鸟 发表于 2016-1-19 12:42:39

感觉象你访问了外部超出1K的RAM空间了!

bondxie3 发表于 2016-1-19 15:15:59

EMC菜鸟 发表于 2016-1-19 12:42
感觉象你访问了外部超出1K的RAM空间了!

stc12c5a60s2的ram有 256+1024字节啊.

chess01 发表于 2016-1-19 15:43:36

本帖最后由 chess01 于 2016-1-20 08:51 编辑

bondxie3 发表于 2016-1-19 15:15
stc12c5a60s2的ram有 256+1024字节啊.

STC的1K空间=256+768

仔细看了下datasheet,确实是1280字节,256+1024

EMC菜鸟 发表于 2016-1-19 15:50:09

chess01 发表于 2016-1-19 15:43
STC的1K空间=256+768

也不是,楼主的单片机一共 1280 字节RAM,其中内部 256,外部 1024!

单看楼主提示的信息看不出问题,怀疑楼主程序里有BUG,导致访问冲出了 1024 的空间!

bondxie3 发表于 2016-1-19 16:24:17

EMC菜鸟 发表于 2016-1-19 15:50
也不是,楼主的单片机一共 1280 字节RAM,其中内部 256,外部 1024!

单看楼主提示的信息看不出问题,怀 ...

如果超出256+1024,会默认使用外部总线吗?
我仔细检查看看, 对段式液晶的操作都是使用的 偏移+位地址 的方式.
我一段一段得把代码屏蔽后测试过, 如果超出应该每次都会超出, 而脉冲是偶尔出现.

linghu886 发表于 2016-1-19 16:52:13

不会默认使用外部总线的,编译器压根不知道你的MCU的DATAIDATA XDATA的范围。都是用C编程,没有关注RAM的区间范围呀。

EMC菜鸟 发表于 2016-1-19 17:30:33

bondxie3 发表于 2016-1-19 16:24
如果超出256+1024,会默认使用外部总线吗?
我仔细检查看看, 对段式液晶的操作都是使用的 偏移+位地址 的方 ...

外部总线超出 1024,就会使用外部总线,这个是单片机硬件决定的!

所以如果P2口有你不希望的脉冲,首先检查是不是有对扩展RAM的越界访问!

dyjhy 发表于 2016-1-28 16:04:57

查一下是不是固件没下载进去,我用最新的下载软件就有这个问题,好像是6.85I第一次能下载进去,后面就下载不进去了,看HEX文件是最新的,看着也是下载进去了。但就是没改变,后来换成6.85E就一切正常了。
页: [1]
查看完整版本: 求助: STC单片机P2口有莫名的脉冲输出!