社区
单片机/工控
帖子详情
用C51如何实现微秒(us)的时间延时啊,求助
lcypen
2004-07-28 07:39:57
我做一开发,由于要求时序很严格,timeslot一般从几微秒到几百微秒。
有例程提供的时间延迟但都不尽相同,而且算出来的时间相差很多。
// 5ms delay
// 晶振 12MHz
void Delay(void)
{
register i;
for(i=1000;i>0;i--)
;
}
谁可以告诉我如何实现微秒的延时程序?谢谢
...全文
3139
14
打赏
收藏
用C51如何实现微秒(us)的时间延时啊,求助
我做一开发,由于要求时序很严格,timeslot一般从几微秒到几百微秒。 有例程提供的时间延迟但都不尽相同,而且算出来的时间相差很多。 // 5ms delay // 晶振 12MHz void Delay(void) { register i; for(i=1000;i>0;i--) ; } 谁可以告诉我如何实现微秒的延时程序?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heavenxyf
2004-08-05
打赏
举报
回复
如果是单片机,我想可以用_nop_指令!一个_nop指令是12*1/12MHz=1us,所以,当然如果采用循环这也会消耗掉一定的时间,可以实机调试,用示波器观察!
linshengfeng
2004-08-05
打赏
举报
回复
请你选用DS的100MHZ/4T的MCS51单片机.
azmao
2004-08-03
打赏
举报
回复
_nop();
supergold
2004-08-02
打赏
举报
回复
在C中嵌入汇编用下面格式
_asm
{
//在这里加入汇编的程序段
}
casinosun
2004-07-30
打赏
举报
回复
_nop();include一个。h
lanmanyinhua
2004-07-30
打赏
举报
回复
建议使用24MHZ的晶振,那么一条指令周期就是0.5us, 在做ms级以下的延时时,一定要用汇编,那样才能够很精确的控制!其他主控程序可以使用c语言!
lcypen
2004-07-30
打赏
举报
回复
谢谢各位
如果要用汇编实现,在C51中如何嵌入汇编代码
我用的编译器是uvision IDE
justin108
2004-07-30
打赏
举报
回复
汇编
中断?可以把?
eric9811
2004-07-30
打赏
举报
回复
us级的延时只有用汇编才能做得更精确!
LanceJin
2004-07-29
打赏
举报
回复
有趣
nantong
2004-07-29
打赏
举报
回复
顶一下。我只要2分。
oral_expert
2004-07-28
打赏
举报
回复
写延时程序时一定要考虑系统使用的晶振的频率。对于你所说的微秒级的延时,如果系统使用12MHZ的晶振,则一条NOP汇编指令便是延时1微秒。
tuxw
2004-07-28
打赏
举报
回复
/**************************************************************
功能:延时
参数:c 的范围为 0 - 255
当 C = 0 时,延时为 2 * 256 + 6 = 518 个机器周期
当 C 为其它值时,延时为 2 * C + 5 个机器周期
注释 : ①以上是以常数调用的计算值,如果用变量调用,根据变量的存
储类型的不同可能要增加一到三个周期
②编译环境:Keil C
***************************************************************/
void Delay( uchar c )
{
while( --c ) // 不可写成 c--,否则生成的代码很难看 :)
;
}
编译后的子程序内是一条 DJNZ 指令,耗时 2 个周期,由于准备到 R7 中,调用 LCALL,还有返回 RET 等要消耗时间,所以要加上 5 个周期。
用 0 调用时有点特别,0 减 1 后变作 0xFF,所以循环次数为 256 次,另外一点很有意思:
当用 1 - 255 的常数调用时,生成的代码如下
MOV R7, #1 ; #1 - 255
LCALL _Delay
用 0 调用则多了条指令
CLR A
MOV R7, A
LCALL _Delay
所以参数为 0 时,要多加一个周期
用变量调用时(如 Delay(i) 之类的形式)根据变量 i 的存储类型加上相应的访问时间
该函数的分辨率为 2 个机器周期,最小延时为 7 个机器周期
flowercity
2004-07-28
打赏
举报
回复
几乎不可能
C语言是不能做到精确定时的
只有用汇编
UG 2023 64bit 64 位系统设计软件.rar
UG NX 2023(Unigraphics NX,中文名交互式 CAD/CAM 系统),是西门子 Siemens PLM Software 研发的 CAD/CAE/CAM 一体化产品工程解决方案,提供全套数字化造型与仿真验证手段。软件功能强悍,可轻松完成各类复杂实体、曲面造型构建,广泛应用于机械装备、塑胶模具、汽车零部件、航空航天、数控加工、钣金设计等工业领域。 软件仅支持 Win10、Win11 64 位系统,不再兼容 Win7,硬件配置要求适中。软件集三维建模、工程制图、数控编程、力学与运动仿真等功能于一体,可兼容各类主流设计文件格式。 该版本优化了装配加载速度、曲面建模能力与刀路算法,运行稳定,是当下行业主流版本。 由于安装包文件过大,CSDN 无法直接上传,附件提供下载链接及配套安装教程,欢迎下载使用。
vivado XADC IP核使用教程
vivado XADC IP核使用教程
64 位 NX2023 UG 主流行业版本 无偿持续分享.rar
UG(Unigraphics NX)是一款由西门子(Siemens PLM Software)开发的交互式CAD/CAM/CAE系统。作为全球领先的产品工程解决方案,它集成了产品设计、工程仿真与制造加工于一体。其功能强大且应用广泛,能够轻松
实现
各种复杂实体和造型的构造,为模具、汽车、航空航天及通用机械等行业提供了高性能的机械设计与制图灵活性。
【变压器的开路试验】变压器进行开路试验时的电路连接配置(Simulink仿真
实现
)
内容概要:本文详细介绍了利用Simulink进行变压器开路试验的电路连接配置与仿真
实现
方法,重点在于通过仿真手段还原实际电力系统中变压器在空载条件下的电气特性,从而深入理解其工作原理与性能表现。文章作为电力系统仿真系列研究的一部分,系统阐述了从电路模型搭建、参数设定、仿真运行到结果分析的完整流程,突出展示了MATLAB/Simulink在电力设备建模与教学科研中的强大功能与应用价值。; 适合人群:具备电力系统基础知识,熟悉MATLAB/Simulink仿真环境,从事电气工程、自动化及相关领域的研发人员,以及高年级本科生和研究生。; 使用场景及目标:①掌握变压器开路试验的基本原理与Simulink仿真建模的具体步骤;②通过仿真实验深入理解空载电流、铁芯损耗及励磁特性等关键参数的物理意义;③为后续开展变压器短路试验、暂态过程分析以及其他电力设备的仿真研究奠定理论与实践基础。; 阅读建议:建议结合Simulink软件动手实践,逐步构建并调试电路模型,重点关注各元件参数的设置方法与测量模块的应用技巧,同时推荐参考文中提及的其他相关仿真案例进行拓展学习,以全面提升对电力系统仿真实践的整体认知与操作能力。
SoloBlog.zip
SoloBlog.zip
单片机/工控
27,521
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章