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

荣誉版主,老许版:8H系列/8G系列, MDU16 V3.0 LIB 库使用说明

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-08-11 21:09:11

0

主题

5

回帖

70

积分

注册会员

积分
70
发表于 2024-11-24 19:45:58 | 显示全部楼层
LAO*** 发表于 2024-11-13 04:29
手头没有8H4K64TL芯片,用的是STC8H4K64U开发板,无论外挂哪种库,更换了好多输入数据(包括100),都未发 ...

最近比较忙,没实验,有空试验一下。
1、没使用OS
2、没在中断中使用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-08-11 21:09:11

0

主题

5

回帖

70

积分

注册会员

积分
70
发表于 2024-11-24 19:47:25 | 显示全部楼层
LAO*** 发表于 2024-11-13 04:35
这里给一个以前写的开平方子程序,精度比你的高1bit(带4舍5入功能),供参考

函数没问题,调用默认库是可以正常工作的,使用这个加速库就卡死!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-08-11 21:09:11

0

主题

5

回帖

70

积分

注册会员

积分
70
发表于 2024-11-24 19:58:03 | 显示全部楼层
主程序
void main(void)
{
    uint8_t t8,i;
    EAXSFR();
    EA        = 0;
    IntSqrt(100);
}

微信图片_20241124195709.png

运行会在此处卡死!

点评

仔细观看了你的贴图, 发现程序是卡在回读 MDU16 运算完成标志处, 从而分析判断出, 是以下两个原因造成的. 1. 所用仿真芯片不带 MDU16 模块, 从而无法运行, 读取不到 MDU16 运算完成标志. 2. 使用了 Keil C51自带的软  详情 回复 发表于 2024-11-29 05:54
MDU16 V3.0 LIB 库 , 必须硬件仿真或运行, 我想这种低级错误, 你不会犯吧??? 请仔细 检查核对 keil C51 仿真设置, 是否确定已设置为硬件仿真, 以及每次仿真均更新程序. 如手头有其他 stc8 类 带 MDU16 的芯片, 可换  详情 回复 发表于 2024-11-25 01:53
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-25 01:53:53 | 显示全部楼层
look*** 发表于 2024-11-24 19:58
主程序
void main(void)
{

MDU16 V3.0 LIB 库 , 必须硬件仿真或运行, 我想这种低级错误, 你不会犯吧???
请仔细 检查核对 keil C51 仿真设置, 是否确定已设置为硬件仿真, 以及每次仿真均更新程序.

如手头有其他 stc8 类 带 MDU16 的芯片, 可换之进行 这一段测试程序的仿真, 试试.
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-25 02:02:05 | 显示全部楼层
最后, 提一嘴.
在硬件仿真时, 设断点运行到出错前(数据移位操作处), 点击激活反汇编窗口, 再单步运行程序.
看看程序 是进入死循环 还是 跑飞.
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-25 02:26:53 | 显示全部楼层
另外想到一点, stc的仿直器, 通讯速度较快(内部自动选择尽可能高的通讯频率),
我碰到过, 插在PC机 前面板 usb 上仿真, 易死机单步运行也跑飞.
插在PC机 后面 usb 上仿真, 就正常了.
另外, usb 连接线,  质量也有讲究, 差的通讯不正常易死机 (官方附送的质量不错)
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-29 05:54:10 | 显示全部楼层
look*** 发表于 2024-11-24 19:58
主程序
void main(void)
{

仔细观看了你的贴图, 发现程序是卡在回读 MDU16 运算完成标志处,
从而分析判断出, 是以下两个原因造成的.
1. 所用仿真芯片不带 MDU16 模块, 从而无法运行, 读取不到 MDU16 运算完成标志.
2. 使用了 Keil C51自带的软件模拟仿真(无法仿真 MDU16 模块), 所以读取不到 MDU16 运算完成标志.
  由于 8H4K64TL芯片自带 MDU16 模块, 所以, 结论只能是你, 设置使用了软件仿真, 来实时仿真 MDU16 功能!!!

回复 支持 反对

使用道具 举报 送花

已绑定手机

0

主题

3

回帖

14

积分

新手上路

积分
14
发表于 2024-12-2 16:29:14 | 显示全部楼层
我看就这个里边没有对浮点数的计算
请问浮点数计算是测试有什么问题放弃了吗

点评

MDU16 是个失败的设计, 注: 不是 MDU16 库设计有问题, MDU16 指令集实际上是很实用的, 而是错在将相关寄存器放在了片外xfr中, 使得读写和触发MDU16 指令, 每次都增加了好几个时钟周期(如放在SFR中, 是单周期), 这  详情 回复 发表于 2024-12-2 19:40
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-12-2 19:40:28 | 显示全部楼层
本帖最后由 LAOXU 于 2024-12-2 19:50 编辑
10147*** 发表于 2024-12-2 16:29
我看就这个里边没有对浮点数的计算
请问浮点数计算是测试有什么问题放弃了吗
...

MDU16 的设计有缺陷 !
注: 不是 MDU16 库设计有问题, MDU16 指令集实际上是很实用的,  而是错在将相关寄存器放在了片外xfr中, 使得读写和触发MDU16 指令,
每次都增加了好几个时钟周期(如放在SFR中, 是单周期), 这样, 原本利用 MDU16 指令, 可加快乘除等运算, 结果由于将相关寄存器放在了片外xfr,
使得 mdu16 指令实际执行速度大打折扣, 甚至出现倒挂现像(比如乘法), 执行速度比原软件模拟还慢.
这个库是精简去掉了影响程序执行速度的库函数.
MDU16 , STC 已基本废弃, 新型号 都采用外挂 MDU32C/MDU32D 等, 功能更强, 性能更好.
新产品的设计, STC 推荐采用新型号.

回复 支持 反对

使用道具 举报 送花

已绑定手机

0

主题

3

回帖

14

积分

新手上路

积分
14
发表于 2024-12-14 12:33:37 | 显示全部楼层
LAO*** 发表于 2024-12-2 19:40
MDU16 的设计有缺陷 !
注: 不是 MDU16 库设计有问题, MDU16 指令集实际上是很实用的,  而是错在将相关寄存 ...

嗯好的了解
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:33 , Processed in 0.133914 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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