找回密码
 立即注册
楼主: zxcv1973

发现以前老版本的C251编译器几乎无BUG,并且和C51编译器高度一致

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-18 17:23:02 | 显示全部楼层
变量类型 设置 xdata 时, 仿真运行正确, 而设置 pdata 时, 仿真运行得不到想要的结果,



前面示例程序我已经解释的很清楚了!!!


无标题.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-18 17:51:17 | 显示全部楼层
有一次(唯一的一次) , 在c51下 使用 pdata, 我用软件调试一段小程序时, 发现 写入错误(不知写到啥地方去了).
百思不解, 后来想到是否 高位地址 受 P2 控制, 前面加了一条 P2=0; 指令, 仿真立刻正确
注: 程序中从未有过对  P2 口 操作, 以前这样书写, pdata 变量 也从未出错过.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-18 18:00:16 | 显示全部楼层
我上述的示例程序,  执行验证以下目的 :
注: 设置 pdata 时出错 !!!
数组tab2[] <-- 数组tab1[] ;  仿真运行时, 中间可观察读出数据(正确)
数组tab3[] <-- 数组tab2[] ;  仿真运行时, 中间可观察读出数据(错误), 哪怕上述写入到数组tab2[]的数据(写到其他地方), 这时读出也应该正确呀!!!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-18 18:09:53 | 显示全部楼层
上述程序, 软件仿真出错, 硬件仿真同样出错
Keil C251 和 STC32 两家公司, 同时犯错的概率, 几乎无限接近于 0
百思不得其解(程序反复看了, 没问题)


楼上两位同学, 如查出具体原因后,  请告知一下, 谢谢
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-19 11:39:56 | 显示全部楼层
LAO*** 发表于 2024-11-18 18:09
上述程序, 软件仿真出错, 硬件仿真同样出错
Keil C251 和 STC32 两家公司, 同时犯错的概率, 几乎无限接近于 ...

你这和编译器有什么关系,即使有问题那也是仿真器的问题,并且pdata实现各家都有分页机制,并且还不一定相同,不一定就是指向0x010000-0x0100ff区间

点评

考滤到 分页因素, 程序入口处, 我赋值: DPXL = 1; DPH = 0; P2= 0; 够保除了吧? 结果还是一样, 软硬件仿真运行均出错.  详情 回复 发表于 2024-11-20 07:00
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-19 11:41:15 | 显示全部楼层
LAO*** 发表于 2024-11-18 18:09
上述程序, 软件仿真出错, 硬件仿真同样出错
Keil C251 和 STC32 两家公司, 同时犯错的概率, 几乎无限接近于 ...

还有想不明白你怎么这么喜欢用pdata类型,在C251上竟然还用

点评

不是我喜欢用 PDATA类型, 一开始就建议同学们 少用, 有 BUG . 连官方都推荐别用!!! 是你不断的提出挑战, 说没问题, 编译正确. 我应战, 不断地给出证据, 证明 编译结果正确, 而运行错误! 现在在你嘴里, 怎么我成了那  详情 回复 发表于 2024-11-20 07:25
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-20 07:00:11 | 显示全部楼层
zxcv*** 发表于 2024-11-19 11:39
你这和编译器有什么关系,即使有问题那也是仿真器的问题,并且pdata实现各家都有分页机制,并且还不一定 ...

考滤到 分页因素, 程序入口处, 我赋值:
DPXL = 1;
DPH = 0;
P2= 0;
够保除了吧?
结果还是一样, 软硬件仿真运行均出错.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-20 07:25:05 | 显示全部楼层
zxcv*** 发表于 2024-11-19 11:41
还有想不明白你怎么这么喜欢用pdata类型,在C251上竟然还用

不是我喜欢用 PDATA类型, 一开始就建议同学们 少用, 有 BUG . 连官方都推荐别用!!!

是你不断的提出挑战, 说没问题, 编译正确.
我应战, 不断地给出证据, 证明 编译结果正确, 而运行错误!
现在在你嘴里, 怎么我成了那么喜欢用 PDATA 类型啦???


无标题A.png

无标题B.png

无标题C.png

无标题D.png

无标题E.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:199
  • 最近打卡:2025-05-02 00:28:39
已绑定手机

24

主题

345

回帖

1633

积分

金牌会员

积分
1633
发表于 2024-11-20 08:31:13 | 显示全部楼层
bkeu*** 发表于 2024-11-18 11:32
pdata效率明显高于xdata为什么不用,这都太成熟了,不可能有问题

咋数据手册上说pdata读写比xdata慢呢
2024-11-20_082834.jpg

点评

早期标准 51指令, PDATA 寻址比 XDATA 寻址快. 现在 STC 优化指令, 重点在 XDATA 上, 所以 XDATA 寻址比 PDATA 寻址快. 很正常呀  详情 回复 发表于 2024-11-20 09:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-11-20 08:37:35 | 显示全部楼层
ang*** 发表于 2024-11-20 08:31
咋数据手册上说pdata读写比xdata慢呢

可能movx a,@ri, movx @ri,指令慢,但实际一般还需要对@Ri作运算,这时就会慢

u8 pdata aucMyBuf[16];

aucMyBuf[i+j] = 0;

类似这样的操作pdata快很多,因为只需要8位的运算
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:47 , Processed in 0.163712 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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