延时1s计算方法是将所有指令执行时间相加得出的。比如:
dly1s:
mov
r2,#10
;1
dly1:
mov
r3,#200
;110
dly2:
mov
r4,#248
;120010
djnz
r4,$
;224820010
djnz
r3,dly2
;220010
djnz
r2,dly1
;210
ret
;2
total=1+10+2000+992000+4000+20+2=998033
DEL1S:MOV R7,#10\x0d\D1: MOV R6,#200\x0d\D2: MOV R5,#250\x0d\ DJNZ R5,$\x0d\ DJNZ R6,D2\x0d\ DJNZ R7,D1\x0d\ RET\x0d\\x0d\说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等\x0d\ 2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5
sub delay(T as single)
dim T1 as single
t1=timer
do
doevents
loop while timer-t1<t
end sub
调用时,使用 delay 3 即可延时3秒
除了用timer函数外,还可以使用gettickcount函数,不过使用它之前要声明它,过程与上面的过程差不多,只是参数便是毫秒作为单位了
SLEEP函数延时是毫秒级的,精确度比较高,但它在延时时会占用很多系统时间,使 *** 作系统暂时无法响应用户 *** 作,所以在长延时的时候不适合使用它
根据外部晶振的不同,延时1毫秒的循环次数也不一样,一般12M晶振的话用 for(j=time;j>0;j--);延时时,1毫秒time大概为125左右,这里用110,大概晶振为110592M,所以这段程序,内部循环完成1毫秒延时,外部循环完成500毫秒延时。
1 sleep()是以毫秒计算的,延时5秒是sleep(51000);,延时5分是sleep(5100060);
2包含的头文件看你用的什么编辑软件。
3我用的VC++是用包含在#include<windowsh>头文件中。
#include<stdioh>#include<windowsh>//Sleep()的头文件 main() { int i;
int n=10;for(i=1;i<=n;i++) {printf("%d",i);Sleep(5100060);} //
这里修改延时时间,
有些人说是用#include<dosh>做头文件你自己试下吧。
还用Sleep的S是大写的,不是小写的。
这个程序应该是板子上延时的程序。
a就是需要延迟的毫秒数(也可能是其他单位)。
就是说,执行 for(i=0;i<600;i++);的时间应该是一个单位长度(可能为1ms);
这样,你在调用的时候,赋值给a多少值,实际就是延时多少毫秒。
例如,延时10ms,就用
delay(10);
延时1ms,就用
delay(1);
以上就是关于汇编1S的延时程序怎么弄全部的内容,包括:汇编1S的延时程序怎么弄、用汇编怎么写51单片机的延时程序、关于EXCEL VBA 延时程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)