社区
汇编语言
帖子详情
挑战:如何做到精确等待n个CPU时钟,并且在等待时期将控制权交给操作系统???
gencheng
2008-03-10 08:37:53
由于现在在做的是实时通讯,要求精确的延时,汇编语言能不能做到:精确等待n个CPU时钟,并且在等待时期将控制权交给操作系统???
也就是说在等待时期内不占用cpu资源.我现在用的是Delphi,它的sheep()函数经测试精度太差,比如sheep(1)应该是等待1毫秒,在这1毫秒内让出cpu使用权.但实际上等待了n个毫秒,很不精确.不知道汇编语言能不能做到??
...全文
256
13
打赏
收藏
挑战:如何做到精确等待n个CPU时钟,并且在等待时期将控制权交给操作系统???
由于现在在做的是实时通讯,要求精确的延时,汇编语言能不能做到:精确等待n个CPU时钟,并且在等待时期将控制权交给操作系统??? 也就是说在等待时期内不占用cpu资源.我现在用的是Delphi,它的sheep()函数经测试精度太差,比如sheep(1)应该是等待1毫秒,在这1毫秒内让出cpu使用权.但实际上等待了n个毫秒,很不精确.不知道汇编语言能不能做到??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zmwgreenrain
2008-03-14
打赏
举报
回复
使用timer函数
cnzdgs
2008-03-12
打赏
举报
回复
如果你是要精确一些的定时可以用CreateWaitableTimer和SetWaitableTimer,每秒50次还是没问题的,不过这个定时器跟Sleep的效果是不同的,比Sleep准得多,但离精确到n个CPU周期可差得远了。
再罗嗦一句,这问题跟汇编语言没什么关系。
gencheng
2008-03-12
打赏
举报
回复
不是我要求苛刻,而是用户要求在Windows系统上实现单位时间内的数据采集率要求有一定的指标.比如说每秒50组数据等等.所以Sleep就达不到要求了.而如果不Sleep,让cpu一直无限循环的采集数据,那么cpu占用率将会一直保持在97%以上,用不了多久也会死掉,那样更玩完.
rularys
2008-03-11
打赏
举报
回复
在一个实时系统上也许可以实现;在Windows上可不行,楼主要求很苛刻
大熊猫侯佩
2008-03-11
打赏
举报
回复
windows非实时OS,你可以看一下 windows 内核揭秘 4edit 为什么不可以。
alan001
2008-03-11
打赏
举报
回复
一块板+时钟引线+定时器芯片/处理器
BMCRNET
2008-03-11
打赏
举报
回复
MARK
ckc
2008-03-11
打赏
举报
回复
晕到死不是实时操作系统,无法实现你的要求
不知道你的具体应用是什么,要么降低应用对实时的要求,要么使用硬件解决这个问题
archim
2008-03-11
打赏
举报
回复
阅读CPU手册,计算每条指令的时钟数,然后自己设计一个循环来等待
gencheng
2008-03-11
打赏
举报
回复
楼上的还真够取巧.因为Delphi的Sleep()也是调用win32API的 Sleep.所以效果应该一样.
另外Delphi内嵌的BASM不支持invoke,所以上述方法事实上在Delphi中也行不通.
cnzdgs
2008-03-11
打赏
举报
回复
要与Sleep(1)效果相同?那就用汇编调Sleep函数不就行了。
invoke Sleep, 1
gencheng
2008-03-11
打赏
举报
回复
如何用汇编做出效果和sleep(1)函数相同的东西?难道汇编做不到???
因为主要是用在串口数据采集上,所以有此要求!
cnzdgs
2008-03-10
打赏
举报
回复
做不到,也不可能做到,因为切换一次任务所需要的时间就是微秒级的。如果等待时间不把控制权交出,在一定程度上还有机会做到。
执行Sleep函数不是定时用的,而是放弃线程对CPU的控制权,等到线程轮回一周后才能再次获得控制权,此时如果还未达到Sleep指定的时间,则自动再次放弃控制权,如此往复。线程每次获得控制权是10毫秒(时间片),达到10毫秒后系统会自动切换到其它线程,未达到时可以执行Sleep函数主动放弃。
MC9S08AC128
时钟
与IIC配置实战:从原理到避坑指南
本文深入解析MC9S08AC128的内部
时钟
生成器(ICG)与IIC总线模块,涵盖FEI/FEE/FBE/SCM四种
时钟
模式、FLL失锁与
时钟
丢失检测机制、ICG寄存器配置与修调方法,以及IIC波特率计算、多主机仲裁、10位地址模式和协同初始化流程。重点揭示配置陷阱,如首次写ICGC1必须启用外部振荡器、读-写清除状态位顺序、仲裁失败自动退为从机等关键实践要点。
【考研】2026/7/6
每天一点小知识
【信息科学与工程学】【安全领域】第一百四十二篇 零信任网络解决方案中的算法04
本文系统梳理城域网络在智慧城市、工业互联网、车联网、远程医疗、元宇宙等100+垂直场景下的差异化通信需求,聚焦高可靠低时延、大连接、确定性传输、算力协同等关键技术
挑战
,涵盖TSN融合、量子保密通信、通感算一体化、6G语义通信等前沿方向,为城域网架构设计与数学建模提供跨领域需求依据。
【信息科学与工程学】【物理/化学和工程技术】【通信工程】第五十八篇 电磁学01 计算电磁学
本文系统梳理计算电磁学与电磁信息论的数学基础,涵盖麦克斯韦方程组、波动/亥姆霍兹/泊松/扩散方程等核心偏微分方程,以及电场/磁场/体积分方程;深入阐述电磁信息论中的信道容量、隐蔽通信、侧信道泄露、物理层安全与逆问题信息界;并揭示其在网络安全攻击建模(如HPM级联失效、RF指纹污染、时间同步延迟攻击等)中的关键作用,强调PDE与信息论方程的跨层关联。
【信息科学与工程学】【运营科学】第二篇 C4信息与通信网络运营 (C4) ——数据中心网络运营01
本文构建了面向数据中心网络运营(C4.41xxxx)的带宽预留算法分类框架,覆盖云边协同、数据中心内部及数据中心互联三大场景。重点阐述R1固定带宽预留在拍卖、优化、博弈论、机器学习、控制理论等七类机制下的实现方法,结合时间维度(离线/在线/预测/实时)、资源类型(带宽/算力/存储联合)与网络拓扑(Fat-Tree、Clos、多跳云边)进行系统性建模。强调RDMA、RoCEv2、网络切片等关键技术约束下的确定性保障算法。
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章