找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2522|回复: 7
收起左侧

请问各位大神们,51单片机为什么在memory model为large时串口会出问题

[复制链接]
ID:1004966 发表于 2022-2-12 23:04 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

ID:1005062 发表于 2022-2-13 21:39 | 显示全部楼层
编译前需要在“devies target"栏里的”memory model:"选PDATA或XDATA
回复

使用道具 举报

ID:624769 发表于 2022-2-13 23:26 | 显示全部楼层
memory model 永远用 small
回复

使用道具 举报

ID:1004966 发表于 2022-3-3 14:17 | 显示全部楼层
188610329 发表于 2022-2-13 23:26
memory model 永远用 small

但是,我的文件使用small时候会出现SEGMENT TOO LARGE
回复

使用道具 举报

ID:1004966 发表于 2022-3-3 14:53 | 显示全部楼层
blackrkj 发表于 2022-2-13 21:39
编译前需要在“devies target"栏里的”memory model:"选PDATA或XDATA

这么做了,但是功能还是有问题
回复

使用道具 举报

ID:161164 发表于 2022-3-3 16:49 | 显示全部楼层
是菜鸟啊啊啊啊 发表于 2022-3-3 14:17
但是,我的文件使用small时候会出现SEGMENT TOO LARGE

部份变数要变做idata

unsigned char idata Rec_Buff[20];
回复

使用道具 举报

ID:624769 发表于 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
回复

使用道具 举报

ID:1004966 发表于 2022-3-7 00:11 | 显示全部楼层
加前缀确实解决问题了,谢谢各位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表