xhbwork 发表于 2023-1-10 06:17:25

做得不错,还不是很敢用,不知道有没有bug,项目程序效率很重要,更重要的是可靠性,抽空仔细学习下楼主库的源代码。

LAOXU 发表于 2023-1-10 06:36:34

xhbwork 发表于 2023-1-10 06:17
做得不错,还不是很敢用,不知道有没有bug,项目程序效率很重要,更重要的是可靠性,抽空仔细学习下楼主库 ...

因为基本上都是数学函数库, 测试也比较简单...... 看最后运算结果.

楼上可将MDU16库, 挂上和不挂上分别编译运行, 即生成两个不同的 Hex文件, 下载芯片中, 试试效果.

LAOXU 发表于 2023-1-10 06:51:37

建议楼上,挂MDU16库 和 不挂库, 分别编译生成Hex ,下载芯片作对比运行试试

实行对C51内库自动替换,无缝嵌入,其中最具有特色的是float型和long型的除法运算,

xhbwork 发表于 2023-1-10 08:30:21

LAOXU 发表于 2023-1-10 06:51
建议楼上,挂MDU16库 和 不挂库, 分别编译生成Hex ,下载芯片作对比运行试试

实行对C51内库自动替换,无缝 ...

我一个项目,不算很小的代码量,挂载了您的库,编译代码大了百十个字节,不过运行速度手头没有板子没做测试,相信应该有改善的。

LAOXU 发表于 2023-1-10 12:17:52

xhbwork 发表于 2023-1-10 08:30
我一个项目,不算很小的代码量,挂载了您的库,编译代码大了百十个字节,不过运行速度手头没有板子没做测 ...

尽管程序我都用汇编作了优化, 但代码还是偏长, 这个我暂时没办法做到, 原因是由于 STC8 硬件设计的关系, 把MDU16所有的指令寄存器,

都放在了片外 RAM中, 而 51的片外寻址功能(DPTR)很弱, 大量的数据 , 必须 由 片内 R0-R7寄存器 送到MDU16 所属的片外RAM 地址中,

计算好后, 再从 MDU16(片外RAM) 中 读入 片内 R0-R7寄存器 , 可想而知, 这个效率.......

当然, 这一现像在 STC32上, 是不存在的( 数据通过 DMA 自动装载 和返回 R0-R7中)

我已对 宏晶提过建议,详见: 对STC8H硬件MDU16所用寄存器的建议


https://www.stcaimcu.com/forum.php?mod=viewthread&tid=371&extra=page%3D1

社区闲人 发表于 2023-3-8 12:19:16

LAOXU 发表于 2023-1-10 12:17
尽管程序我都用汇编作了优化, 但代码还是偏长, 这个我暂时没办法做到, 原因是由于 STC8 硬件设计的关系,...

建议您百忙之中拨冗将math.h库的三角函数,利用MDU16给优化一下。不胜感激。

LAOXU 发表于 2023-3-10 09:03:53

社区闲人 发表于 2023-3-8 12:19
建议您百忙之中拨冗将math.h库的三角函数,利用MDU16给优化一下。不胜感激。 ...

听取你的意见, 作下一步改开进优化

1. 上一版本 STC8H硬件MDU16 库, 是速度优先, 编译后代码长度较长.

2. 改进后的 下一版本 STC8H硬件MDU16 库, 以代码长度优先, 尽量相同模块用子程序, 这样, 编译后代码长度可缩短, 执行速度会慢点(但也比执行原 51通用代码要快).

社区闲人 发表于 2023-3-10 09:22:41

还是速度优先为好,不介意代码长度。

LAOXU 发表于 2023-3-10 09:43:48

社区闲人 发表于 2023-3-10 09:22
还是速度优先为好,不介意代码长度。

那第一版本就可以用.

STC8H硬件MDU16 库, 可优化了 math.h库的 浮点加减乘除运算, 而其他 三角函数, 对数 等, 都是调用 这 四个基本运算作进一步运算的, 所以, 也等于 优化了 math.h库的 所有函数

社区闲人 发表于 2023-3-10 10:04:44

我测试一下。谢谢先。
页: 1 2 [3] 4 5
查看完整版本: 世上(也是史上)功能最全的STC8 MDU16应用 LIB