llgd.net
当前位置:首页 >> 求问这段汇编语言的延时程序怎么计算延时时间 >>

求问这段汇编语言的延时程序怎么计算延时时间

现在单片机种类太多,即便都是8051内核,系统架构也不完全一样,一个差别就是执行一条指令的时间不尽相同。所以你要根据具体的芯片资料,看看延时程序里用到的各条指令执行时间都是多少,然后计算总延时时间。

第一个延时,mov指令一个时钟,第二个DJNZ跳转是三个时钟,不跳转两个时钟,从255(0FFH)开始每次减一,255次,共255*3-1=764次,最后一次不跳转,只有两个时钟,所以减一,再加上第一条指令的一个时钟,结果是255个时钟,如果时钟周期是一微秒...

使用INT 15H。MOV AH,86H是延迟。 某资料上写参数CX:DX=千分秒,这十分令人费解,研究了一番,发现是是延时(CX*2^16+DX)个百万分之一秒,CXDX相当于作一个64位寄存器,CX高位,DX低位

首先明确机器执行一条指令耗时大概是1us那么延时10ms的程序如下:MOV AX,50L1:MOV BX,100L2:DEC BX JNZ L2DEC AXJNZ L1执行完之后时间大约为10ms多一点 根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。具体步骤如下:/导致这种情...

一条条指令的时间数出来的,看循环一次的指令要多久,乘以循环次数,这种原地延时的程序,延时时间也都是个大概,循环执行中间,来中断的话,延时程序的时间就会加长,一般用在时间要求不用太准的地方。

DELAY: MOV R7,#10 ;1 D1: MOV R6,#200 ;10*1 D2: MOV R5,#250 ;10*200*1 DJNZ R5,$ ;10*200*250*2 DJNZ R6,D2 ;10*200*2 DJNZ R7,D1 ;10*2 RET ;2 Total=1+10*3+2000*3+2000*250*2+2=1006035,如果晶振为12M的话,约1秒

DELAY:MOV R7,#08H ; #08H = 8 DEL1:MOV R6,#0FAH ; #0FAH = 250 DEL2:MOV R5,#0F8H ; #0F8H = 248 DEL3:DJNZ R5,DEL3 ; (248*2) DJNZ R6,DEL2 ; ((248*2)+ 3) * 250 DJNZ R7,DEL1 ;(((248*2)+3)*250+3)*8 RET ;(((248*2)+3)*250...

编码程序的一种变式。 CPU在执行语句的时候也是需要耗时的,只是CPU运行速度太快,我们没办法看清楚,所以如果CPU执行语句越多,所需要的时间就越多,根据这个原理,就可以通过让CPU随便执行语句,起到延时的效果,这被称为“软件延时”,CPU执行...

程序看不大清楚,编一个类似程序来说明吧。 DELAY: MOV R7,#20 ;1DLY: MOV R6,#100 ;1*20 DJNZ R6,$ ;2*100*20 DJNZ R7,DLY ;2*20 RET ;2以上各行指令注释的第一个数字是执行该条指令所用的机器周期。后面数据是共执行了多少次改指令。累计...

daily proc near mov cx,2000H D0:mov ax,0FFFFH D1:dec ax jz D1 loop D0 daily endp 延时大概是0.33s 其实延时跟CPU有很大关系,不能用软件精确计算,可以用8254实现,硬件和软件功能具有逻辑上的等效性。

网站首页 | 网站地图
All rights reserved Powered by www.llgd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com