一阶线性时滞系统延迟时间多少秒,MOV R580 HERE00 DJNZ 这段AT89S51延时程序是
来源:整理 编辑:亚灵电子网 2023-01-07 08:59:58
1,MOV R580 HERE00 DJNZ 这段AT89S51延时程序是
在12M晶振下 MOV R5,#80 ;执行时间1usHERE00: DJNZ R5,HERE00 ;每次执行2us所以总时间=2*80+1 =161us
2,whilex fori0i120i 是延时多少秒的程序 是和X的取值相关
最简单的方法是程序上加测试脚拿示波器量出延时时间,这个比较准。如果真的要算,首先你得告知程序的机械周期,也就是你选的晶振的大小,然后根据每种语句对应的机械周期倍数求出指令周期。接着就是x的值,这里决定总循环的次数。所有的数据都摆出来,延时也就知道了。我不喜欢这种做法,毕竟c语言的指令是顺序执行,这也就导致一些外在的情况会干扰到它的运行。
3,请问大神C51的延时怎么算延时100微秒
用定时器延时更精确:我就写个基本的东西,你根据你的程序补全来使用:#include <reg51.h>main()while(1)}void funtime0(void) interrupt 1}你好!定时器是比较准确,但是51就两个定时器,要是系统中需要用到定时器精确定时或者计数,这样就方便了,除非应用操作系统实施调用,要是延时要求不是太精确的话,可以用for循环消耗机器周期的方式。打字不易,采纳哦!
4,系统延时
系统延时指一个数据包从用户的计算机发送到网站服务器,然后再立即从网站服务器返回用户计算机的来回时间。通常使用网络管理工具PING(Packet Internet Grope)来测量系统延时。 由于互联网络的复杂性、网络流量的动态变化和网络路由的动态选择,系统延时随时都在不停(的变化称为抖动)。系统延时和网络延时的抖动越小,那么网络的质量就越好。 在互联网上,典型的系统延时为几十到几百毫秒。影响系统延时的主要因素是路由的跳数和网络的流量延时就是你在摄像机前面挥挥手,录像机上要过一下才显示你在挥手,这个目前还没办法解决,一般在一秒左右。因为网络摄像机数据量大,不管是交换机还是录像机,都不能很快处理过来,就像咱们通过网络看直播比赛,不同的网站,延时不一样。
5,一阶系统的传递函数为2s 1允许偏差005求调整时间
我也是刚学,自控是很狗血的其实。讲到单位负反馈,知道G(s)=1/s(s+1)。那么Y(s)/X(s)=G(s)/(1+G(s))=1/(S^2+S+1)二阶系统的G(s)有个通式:ωn^2G(s) = --------------------------------S^2 + 2*ζ*ωn + ωn^2对应上面的式子就很容易求出ωn和ζ,ωn=1,ζ=0.5峰值时间 tp=π/ωd=π/(ωn*sqrt(1-ζ^2))上升时间 tr=(π-θ)/ωd =(π-θ)/(ωn*sqrt(1-ζ^2)) =2.418 θ=arctan(sqrt(1-ζ^2)/ζ)=1.047超调量 σp=exp(-ζ*π/sqrt(1-ζ^2))*100%=16.3%调整时间 ts 分两种不同的误差范围(Δ) ±2%~±5% ts= -lnΔ /(ζ*ωn) 这里就不给你算了不知道你现在学到哪了,有兴趣来讨论下。。。
6,单片机中的延时程序的延时时间怎样计算的
/*****************************************************************/谢谢"罗门大佬"提醒,DJNZ 后面跟寄存器的化,确实是2个指令周期;MOV后面如果是立即数对寄存器操作的化也是2个指令周期,只是“大佬”的解释还是不能苟同哦,现在修改我原先的回答如下(为了到1000分,努力,555):/****************************************************************/不知道你的程序上的注释究竟对不对,可以通过示波器看看吗(延时后翻转一个端口)? 从程序的注释上看应该用12MHz晶振,或者程序和题目不对应。 /********************** 小心的以为 ***************************/ DLY10S : MOV R5,100 ;2指令 4us DLY10S1: MOV R6,200 ;2指令 4us DLY10S2: MOV R7,248 ;2指令 4us DLY10S3: DJNZ R7,DLY10S3;248*2+4----------------->2指令A = 248*2*2us DJNZ R6,DLY10S2;(248*2+4)*200+4 -------->2指令B =(A+2a+2b)*200*2us DJNZ R5,DLY10S1;[(248*2+4)*200+4]*100+4->2指令C =(B+2a+2a+2b)*100*2us RET ;1指令 2us 总时间=C+1*2us;此处的+1是“RET”的时间;上述注释中的“+2a”是MOV指令周期,注意对应的循环;上述注释的“+2b”是DJNZ本身的2个机器周期;应该是这样的吧,你的程序可能有问题。你需要延时多长?我给你个延时10ms的子程序(时钟 6MHZ)DL10ms: MOV R7,#05HLOOP1: MOV R6,#0F9HLOOP2: NOP NOP DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域[1]。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片DS18B20时,允许误差范围在十几微秒以内[2],否则,芯片无法工作。用51汇编语言写程序时,这种问题很容易得到解决,而目前开发嵌入式系统软件的主流工具为C语言,用C51写延时程序时需要一些技巧[3]。因此,在多年单片机开发经验的基础上,介绍几种实用的编制精确延时程序和计算程序执行时间的方法c程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12mhz的单片机为例,晶振为12mhz即一个机器周期为1us。 一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); } 计算分析: 程序共有三层循环 一层循环n:r5*2 = 81*2 = 162us djnz 2us 二层循环m:r6*(n+3) = 202*165 = 33330us djnz 2us + r5赋值 1us = 3us 三层循环: r7*(m+3) = 15*33333 = 499995us djnz 2us + r6赋值 1us = 3us 循环外: 5us 子程序调用 2us + 子程序返回 2us + r7赋值 1us = 5us 延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms 计算公式:延时时间=[(2*r5+3)*r6+3]*r7+5 二. 200ms延时子程序 程序: void delay200ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=132;j>0;j--) for(k=150;k>0;k--); } 三. 10ms延时子程序 程序: void delay10ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } 四. 1s延时子程序 程序: void delay1s(void) { unsigned char h,i,j,k; for(h=5;h>0;h--) for(i=4;i>0;i--) for(j=116;j>0;j--) for(k=214;k>0;k--); }
文章TAG:
一阶线性时滞系统延迟时间多少秒一阶 线性 时滞