单片机延时计算程序源代码
源代码在线查看: ◆a51软件延时◆精确分析◆.txt
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
File: ◆A51软件延时◆精确分析◆.TXT 〓
Time: 10:53-11:30 〓
Date: 08-7-26 〓
Note: MOV Rn,#Data 为一个机器周期 〓
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
MAIN: ;机器周期
MOV P1,#0FFH ;1'
ACALL DELAY ;2'
MOV P1,#00H ;1' 设置断点
ACALL DELAY ;2'
MOV P1,#0FFH ;1' 设置断点
DELAY:
MOV R7,#20 ;1'
D1: MOV R6,#248 ;1'
DJNZ R6,$ ;2' 248*2=496
DJNZ R7,D1 ;2' 2*20=40 (496+1)*20=9940 9940+40=9980
RET ;2' 9980+2+1+1+2=9986
END
▲Keil C 测试结果:
20(x)
248(y)
0.000 000 00
0.009 987 00
0.019 974 00 ◆0.009 987 00
▲计算分析如下:
延迟时间为: (2*248+1)*20+2*20+2+1+1+2=9986 (包括ACALL 2')
由于MOV P1,#0FFH 1'
故延迟时间为: 9986+1=9987
----------------------------------------------------------------
▲测试结论:
延迟时间: Delay_Time=(2*y+1)*x+2*x+6 (包括ACALL 2')
----------------------------------------------------------------
------------------------------------
▲程序代码:
DELAY:
MOV R7,#x
D1: MOV R6,#y
DJNZ R6,$
DJNZ R7,D1
RET
-----------------------------------
▲故延迟时间10ms的程序代码为:
DELAY:
MOV R7,#38
D1: MOV R6,#130
DJNZ R6,$
DJNZ R7,D1
RET
-----------------------------------
▲故延迟时间1ms的程序代码为:
DELAY:
MOV R7,#2
D1: MOV R6,#247
DJNZ R6,$
DJNZ R7,D1
RET