Code Segment
Assume CS:Code,DS:Code
-----------------------------------------
Subroutine 延时指定的时钟嘀嗒数
入口:
Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)
Delay1S Proc Near
push dx
push cx
xor ax,ax
int 1ah
mov Times,dx
mov Times[2],cx
Read_Time: xor ax,ax
int 1ah
sub dx,Times
sbb cx,Times[2]
cmp dx,Didas
jb Read_Time
pop cx
pop dx
ret
Times dw 0,0
Delay1S EndP
-----------------------------------------
Didas equ 18
Start:call Delay1S
Exit_Proc: mov ah,4ch 结束程序
int 21h
CodeENDS
ENDStart 编译到此结束
延时1s计算方法是将所有指令执行时间相加得出的。比如:dly1s:
mov
r2,#10
1
dly1:
mov
r3,#200
1*10
dly2:
mov
r4,#248
1*200*10
djnz
r4,$
2*248*200*10
djnz
r3,dly2
2*200*10
djnz
r2,dly1
2*10
ret
2
total=1+10+2000+992000+4000+20+2=998033
如果使用12m晶振,那么延时时间为0.998秒。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)