微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 精确延时程序

精确延时程序

时间:11-28 来源:互联网 点击:
在写一些有些时序的程序时,要用到准确的延时时间,以下是使用Keil软件反汇编来计算延时的。

程序如:

void delayns(uchar t)
{ uchar k,i,j;
for(k=0;kfor(i=0;i<14;i++)
for(j=0;j<237;j++);
}

经过汇编后计算的结果为
(3*j*i+5*i+10)*k+4=10024*k+5 us;这个10us的延时还行

他的反汇编程序是:

CLR A 1
MOV R6,A 1
?C0008:
MOV A,R6 1*k
CLR C 1*k
SUBB A,R7 1*k
JNC ?C0017 2*k
; for(i=0;i<14;i++)

CLR A 1*k
MOV R5,A 1*k
?C0011:
; for(j=0;j<237;j++);
CLR A 1*i*k
MOV R4,A 1*i*k
?C0014:
INC R4 1*j*i*k
CJNE R4,#0EDH,?C0014 2*j*i*k #0EDH为j
?C0013:
INC R5 1*i*k
CJNE R5,#0EH,?C0011 2*i*k #0EH为i
?C0010:
INC R6 1*k
SJMP ?C0008 2*k
; }

?C0017:
RET 2
; END OF _delayns

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top