找回密码
 立即注册
查看: 196|回复: 3

关于软件延时时间的计算

[复制链接]
已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-9-29 11:04:15 | 显示全部楼层 |阅读模式
图片是stc-isp软件延时计算器,但是并没有12T或者是1T的选项,对DJNZ指令来讲,需要2个机器周期,那么执行时间到底是2us,还是1/12M *2呢?
ScreenShot_2026-09-29_110341_222.png
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-9-29 11:50:41 | 显示全部楼层
汇编 DJNZ要2或3时钟周期,跳转时是3,不跳转是2; 一周期=1/12M,不是2us;
上面代码的时钟周期大概:
  145*3+256*15*3+15*3+8+6= 12014T
145*3: 第一次循环,DNJZ次数。
256*15*3: 后面15次循环,DNJZ次数;
15*3: 第二层,DNJZ次数
8: 循环外的其他指令;
6:是函数调用和ret的时钟数。
因为DNJZ我统一按3计算,实际要小一点点。这里我就不严格计算了,只是大概值。

12M频率,1ms需要12k个T, 与上面计算的12014 相近;
“12T或者是1T的选项”是定时器的硬件选项,你用的是软件,不需要设置。



回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
 楼主| 发表于 2026-9-29 13:33:34 | 显示全部楼层
DJNZ需要的是2个机器周期,如果跳转需要额外的1个机器周期,也是3个机器周期,不是时钟周期吧,那么执行一条DJNZ需要的时间是2*(1/12)*12 = 2us或者3us
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
 楼主| 发表于 2026-9-29 13:53:03 | 显示全部楼层
我看了手册,你是对的,DJNZ需要的是2个或者3个时钟周期,感谢
截图202609291352245781.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-7 13:18 , Processed in 0.066328 second(s), 56 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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