首页 > 电路 > 集成电路 > 单片机时钟延时函数延时多少,单片机c语言中延时函数的延时时长怎么计算

单片机时钟延时函数延时多少,单片机c语言中延时函数的延时时长怎么计算

来源:整理 时间:2023-03-24 14:06:13 编辑:亚灵电子网 手机版

1,单片机c语言中延时函数的延时时长怎么计算

不同的单片机,不同的晶振都有不同的效果,一般地可以用软件或者硬件仿真看,软仿可以看时间差,硬件仿就直接写入单片机,然后用示波器去看,逐步调整到需要的值。

单片机c语言中延时函数的延时时长怎么计算

2,单片机汇编语言延时函数时间该如何计算

第一个延时,mov指令一个时钟,第二个DJNZ跳转是三个时钟,不跳转两个时钟,从255(0FFH)开始每次减一,255次,共255*3-1=764次,最后一次不跳转,只有两个时钟,所以减一,再加上第一条指令的一个时钟,结果是255个时钟,如果时钟周期是一微秒,那么延时了255微秒。第二个延时程序有两个循环,结果是(765+3)*765个时钟,再乘以时钟周期就是延时时间了。自己分析吧。

单片机汇编语言延时函数时间该如何计算

3,单片机延时函数

一个时钟周期=晶振的倒数51单片机的一个机器周期=6个状态周期=12个时钟周期一个单周期指令包括一个机器周期,即12个时钟周期,所以12M晶振的话一条单周期指令执行的时间为12*(1除12M)=1Us延时更多的话往上乘就是了

单片机延时函数

4,单片机延时多少个时钟周期

这要看是什么单片机了,要是AT89系列的,是按机器周期Tc计算,一个机器周期是12个时钟周期,mov R7,#10;这是1个TcDJNZ R7,$;循环一次是2个Tc,循环10次是20个Tc,这不包括调用子程序和从子程序返回的时间。要是STC单片机,是1T的,就按时钟周期计算了。这种计算延时的方法,必须是在实物单片机上运行才对,要是在proteus里仿真这种计算就不准了,只能根据仿真的结果大致调节了,因这决定于电脑的速度与仿真用的单片机设置的频率。

5,单片机c语言延时计算问题

void delay(uchar time) for(uchar i=0;i<time;i++) for(j=0;j<120;j++);}这个延时函数的延时大概为time毫秒这里还有个方法,看时间:你在两个地方设置断点,然后单步执行,在左边的窗口中有时间的显示,估计你还不会调试吧,哈哈。

6,单片机延时计算方法

  单片机延时计算方法  用延时函数就可以实现;  首先,设置定时器工作方式,也就是TMOD,在设置TH0/1,TL0/1的初值,也就是定时时间的设置,然后设置中断允许,并开中断就可以;  参考例子如下:  #include<reg51.h>  void main()    TMOD=0X01;  TH0=0X3C;  TL0=0XB0;  EA=1;  ET0=1;  TR0=1;  while(1);  }  void timer0() interrupt 1    TH0=0X3F;  TL0=0XB0;  }

7,单片机延时时间计算

这个很简单那:f=1MHz/4=250KHz,内部振荡模式 ;T=4uS 这样是什么意思? 如果采用的是1mhz的情况下4分频率得到 t表示单个周期的时间DLY80M MOV A,@220 2 MOV T3,A 2 MOV A,@16 2 MOV T4,A 2 DLY2 NOP 1 WDTC 2 ;防止程序跑飞,喂狗 DJZ T3 ;2 不是0 循环 220*2 JMP DLY2 ;2 NOP 1 MOV A,@250 2 MOV T3,A ;2 这个语句放在这因为第一次算出的时间和后面的组合刚好合适 DJZ T4 ; 2 外循环再延时间 大约时间应该是 [15*250*8+220*8+10]*4=12。7 JMP DLY2 2 NOP RET

8,单片机的延时函数的问题

#define uint unsigned intvoid delay(uint z) uint x,y; for(x=z;x>0;x--) for(y=0;y<110;y++);}Z为形参,此函数延迟1ms 如:delay(1000)即为延迟1s
留下邮箱,我发一个专门计算延时的软件给你,破解的!不要钱!
是的,延时函数中根据单片机的指令周期和时钟频率来算延时函数中循环的参数的。 比如上面的y<110的110.
y=110是某位大师自己定出的,也就是当cpu的晶振为12mhz时,x值大约为延时值(单位为毫秒)。如果想延时500ms,则z=500则可,不是很精确,但很方便。

9,单片机延时问题下面的程序延时大约是多少

如果选用标准单片机,12振荡一个机器周期,正常模式,12M晶振,采用内部直接寻址寄存器(data),其它编译控制项为缺省设置时,一句while( --num ) 的执行时间是8us,Delay函数的执行时间就是num * 8us。详细说明如下:这段程序的延时与选用的单片机型号(有12振荡一个机器周期和单振荡一个机器周期的芯片)、工作方式(正常还是倍频模式)、晶振、编译模式(变量选择内部寄存器还是外部寄存器及优化模式),num初值等都有关系。另外多说一句,num参数数据类型也是一个因素,选择ulong、uint、uchar时间是不一样的,long时间最长,char最短ulong:40usuint:8usuchar:2us差别很大的。
和选用的单片机、晶振、编译器有关。这个的话12M,stc单片机 不到1us
很少的机器周期耗费了一点时间,单时间增大的时候,它把损耗的时间减小了,所以后来就变小了其实就好比一个分数一样,当分子分母同时增加的时候的那种意思差不多楼主可以好好理解一下你要是知道汇编的话,你就知道为什么这样的建议你去看下汇编的延时计算,你就很清楚 了
初学一般都用的12M的晶振,以上是一个带形参的函数,写程序调用是应写成void Delay(1) 括号里面任写一数 延时时间为1.6us乘以括号里的数。一般我们认为void Delay(3)为5微妙延时。在不需要精确度的时候可以这样用延时函数,精准度高的时候必须用定时器。

10,单片机 c51编程求准确的延时函数

void delay(uint z) uint x,y; for(x=z;x>0;x--) for(y=123;y>0;y--); }要延迟的地方直接写delay(数据);比如,delay(5);
12M 晶振 参数k代表毫秒如果晶振不同,调试修改j=110即可#define uchar unsigned char #define uint unsigned intvoid delayms(uint k) uint i; uchar j; for(i=k;i>0;i--) for(j=110;j>0;j--) ;}
//****************************************** void delay16(unsigned int i) while(--i); } //****************************************** void delay882us(void) delay16(100); } //****************************************** void delay1000us(void) delay16(115); } //****************************************** void delay4740us(void) delay16(546); }
网上有个工具 叫单片机小精灵 里面有精确延时的编程
软件延时都是不精确延时,精确延时需要用到定时器中断。软件延时的计算可以反汇编,汇编指令有对应的执行机器周期,机器周期=时钟周期*12,时钟周期就是晶振频率的倒数。这些都可以通过“单片机小精灵”这个软件实现,本来就不是精确延时,没必要深究,而且不同的51单片机运行速度不一样,延时的时间也不一样。
做什么用精确计时? 准确只能用定时中断了。
文章TAG:单片机时钟延时函数延时多少单片机时钟函数

最近更新