『壹』 单片机延时时间程序怎么编程
举一个例子来说明吧.比如你要编一个延时50毫秒的子程序,那么步骤如下:
1、查看一下你的硬件环境,比如晶振大小,CPU型号,不用CPU指令的机器周期是不一样的。
2、计算延时需要的机器周期。比如采用12M晶振,CPU采用通用8051,那么一个机器周期为1US,50毫秒为50*1000=50000US,需要的机器周期=50000/1=50000。
3、试编程,如下:
程序代码 指令时间 总共时间
DELAY50MS: ;2 2
MOV R7,#A ;1 1
DELAY1:
MOV R6,#B ;1 1*A
DJNZ R6,$ ;2 2*B*A
DJNZ R7,DELAY1 ;2 2*A
RET ;2 2
所以总时间=2+1+A+2*A*B+2*A+2=5+3A+2AB
4、凑数求A、B
根据2、3得到如下式子:
50000=5+3A+2AB
可以有很多种结果,不过最好是以A尽可能小,B尽可能大为原则,当然不能大于255.
我现在凑出A=110,B=225;那么总延时时间=5+3*110+2*110*225=49835。还差165US
5、补齐不够时间
再加一个小循环就OK了,呵呵如下:
MOV R6,#C
DJNZ R6,$
会算了吧,2*C+1=165;所以C=82。
现在完整的延时程序出来了,如下:
DELAY50MS: ;2 2
MOV R7,#110 ;1 1
DELAY1:
MOV R6,#225 ;1 1*110
DJNZ R6,$ ;2 2*225*110
DJNZ R7,DELAY1 ;2 2*110
MOV R6,#82 ;1 1
DJNZ R6,$ ;2 2*82
RET ;2 2
很圆满:总的时间50000微妙,也就是50毫秒。这种方式编程,在该硬件环境下可以保证最大误差为1微妙。
『贰』 台达PLC中延时器的时间是如何计算的
一般的是100ms基时,延时时间=设定时间*基时。
例如TMR T0 K123的延时时间就是123*100ms=12300ms=12.3s。
当M1028为10ms时间切换标志信号,Off时定时器T64~T126的时基为100ms,若为On时则时基改为10ms。
『叁』 51单片机延时程序时间是怎么计算的
最长的延时时间可达216=65536μs、12mhz或6mhz晶振.0592mhz。第一种更容易产生各种标准的波特回率:吴鉴鹰单片机答开发板(视频教程详细,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期),后两种的一个机器周期分别为1μs和2μs。参考资料来源,延时时间与晶振有关系。本程序中假设使用频率为12mhz的晶振。若定时器工作在方式2,则可实现极短时间的精确延时,但是可以通过软件仿真看到具体时间:吴鉴鹰吧贡献文档:网络文库《吴鉴鹰单片机项目实战精讲》单片机开发板参考,资源丰富,便于精确延时,没法计算。如果想精确延时,单片机系统一般常选用11,一般需要用到定时器;如使用其他定时方式如果用循环语句实现的循环,但是一般精精确延时是没法用循环语句实现的
『肆』 51单片机使用汇编语言循环延迟时间怎么算
举例来说明吧:
delay:
mov r0,#10 ;1
delay1:
mov r1,#100 ;1*10
djnz r1,$ ;2*100*10
djnz r0,delay1 ;2*10
ret ;2
total=1+1*10+2*100*10+2*10+2=2033
time=total*1/(focse/12)
总结:
第一步:在延时程序没行后边标注该指令执行的机器周期
第二步:在机器周期后边乘以该指令循环的次数
第三步:计算总共用的机器周期数
第四步:计算总延时时间。
『伍』 C语言delay延时时间怎么算,说的详细点谢谢
DelayMS(300)表示希望系统delay 300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这拍改样就能大约算出1ms需要多少次振荡;
简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300ms delay;
这得看你的CPU运行一条指令得多久,像单片机89C51一般一条1us。