标题: 请问各位大神们,51单片机为什么在memory model为large时串口会出问题 [打印本页]

作者: 是菜鸟啊啊啊啊    时间: 2022-2-12 23:04
标题: 请问各位大神们,51单片机为什么在memory model为large时串口会出问题
如题
作者: blackrkj    时间: 2022-2-13 21:39
编译前需要在“devies target"栏里的”memory model:"选PDATA或XDATA
作者: 188610329    时间: 2022-2-13 23:26
memory model 永远用 small
作者: 是菜鸟啊啊啊啊    时间: 2022-3-3 14:17
188610329 发表于 2022-2-13 23:26
memory model 永远用 small

但是,我的文件使用small时候会出现SEGMENT TOO LARGE
作者: 是菜鸟啊啊啊啊    时间: 2022-3-3 14:53
blackrkj 发表于 2022-2-13 21:39
编译前需要在“devies target"栏里的”memory model:"选PDATA或XDATA

这么做了,但是功能还是有问题
作者: lkc8210    时间: 2022-3-3 16:49
是菜鸟啊啊啊啊 发表于 2022-3-3 14:17
但是,我的文件使用small时候会出现SEGMENT TOO LARGE

部份变数要变做idata

unsigned char idata Rec_Buff[20];
作者: 188610329    时间: 2022-3-3 20:42
是菜鸟啊啊啊啊 发表于 2022-3-3 14:17
但是,我的文件使用small时候会出现SEGMENT TOO LARGE

过了一个月,还以为你问题都解决了。
首先, memory model 永远用 small。
如果出现了  'DATA': SEGMENT TOO LARGE   这样的字样
申明变量的时候, 适当给 数组类的变量, 加上 idata, pdata, xdata 等前缀。
分担 DATA 的负担,
对于,只需要 读,写 的数组,可以用pdata,
对于,需要++,--, 与或操作的 数组, 尽量用 idata.
如果数组 较大,可以考虑 xdata
作者: 是菜鸟啊啊啊啊    时间: 2022-3-7 00:11
加前缀确实解决问题了,谢谢各位




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