LAOXU 发表于 2024-11-18 17:23:02

变量类型 设置 xdata 时, 仿真运行正确, 而设置 pdata 时, 仿真运行得不到想要的结果,



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



LAOXU 发表于 2024-11-18 17:51:17

有一次(唯一的一次) , 在c51下 使用 pdata, 我用软件调试一段小程序时, 发现 写入错误(不知写到啥地方去了).
百思不解, 后来想到是否 高位地址 受 P2 控制, 前面加了一条 P2=0; 指令, 仿真立刻正确
注: 程序中从未有过对P2 口 操作, 以前这样书写, pdata 变量 也从未出错过.

LAOXU 发表于 2024-11-18 18:00:16

我上述的示例程序,执行验证以下目的 :
注: 设置 pdata 时出错 !!!
数组tab2[] <-- 数组tab1[] ;仿真运行时, 中间可观察读出数据(正确)
数组tab3[] <-- 数组tab2[] ;仿真运行时, 中间可观察读出数据(错误), 哪怕上述写入到数组tab2[]的数据(写到其他地方), 这时读出也应该正确呀!!!

LAOXU 发表于 2024-11-18 18:09:53

上述程序, 软件仿真出错, 硬件仿真同样出错
Keil C251 和 STC32 两家公司, 同时犯错的概率, 几乎无限接近于 0
我百思不得其解(程序反复看了, 没问题)


楼上两位同学, 如查出具体原因后,请告知一下, 谢谢

zxcv1973 发表于 2024-11-19 11:39:56

LAOXU 发表于 2024-11-18 18:09
上述程序, 软件仿真出错, 硬件仿真同样出错
Keil C251 和 STC32 两家公司, 同时犯错的概率, 几乎无限接近于 ...

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

zxcv1973 发表于 2024-11-19 11:41:15

LAOXU 发表于 2024-11-18 18:09
上述程序, 软件仿真出错, 硬件仿真同样出错
Keil C251 和 STC32 两家公司, 同时犯错的概率, 几乎无限接近于 ...

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

LAOXU 发表于 2024-11-20 07:00:11

zxcv1973 发表于 2024-11-19 11:39
你这和编译器有什么关系,即使有问题那也是仿真器的问题,并且pdata实现各家都有分页机制,并且还不一定 ...

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

LAOXU 发表于 2024-11-20 07:25:05

zxcv1973 发表于 2024-11-19 11:41
还有想不明白你怎么这么喜欢用pdata类型,在C251上竟然还用

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

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












angalp 发表于 2024-11-20 08:31:13

bkeuqoaq 发表于 2024-11-18 11:32
pdata效率明显高于xdata为什么不用,这都太成熟了,不可能有问题

咋数据手册上说pdata读写比xdata慢呢

bkeuqoaq 发表于 2024-11-20 08:37:35

angalp 发表于 2024-11-20 08:31
咋数据手册上说pdata读写比xdata慢呢

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

u8 pdata aucMyBuf;

aucMyBuf = 0;

类似这样的操作pdata快很多,因为只需要8位的运算
页: 1 2 [3] 4
查看完整版本: 发现以前老版本的C251编译器几乎无BUG,并且和C51编译器高度一致