VB程序实现比较精确的毫秒级延时方法
平时使用VB编制PC程序,特别是控制单片机时,很难实现精确的毫秒级延时,参看了一些调用timeGetTime Lib "winmm.dll"或GetCurrentTime Lib "kernel32"的例子,经过实验,均不能精确到1毫秒的延时,最小增量只能为16毫秒。于是采用空循环延时的方法以作权宜之计,如下:
'置一个Timer控制,默认为disable,Interval=1000
'定义循环参数
Public PerSecond As Single
Private Sub Form_Load()
...
...
Timer1.Enable=True
End Sub
'Form_load后启动Timer1,计算参数PerSecond,即延时1毫秒的循环数,如欲进一步精确,可计算多次,求出平均数.
Private Sub Timer1_Timer()
Timer1.Enabled = False
Dim I As Integer
Dim J As Integer
Dim ST As Single
ST = Timer
For I = 1 To 1000
DoEvents
For J = 1 To 100
DoEvents
Next
Next
ST = Timer - ST
PerSecond = 1 / ST
End Sub
'延时子程序
Public Function MyDelayTime(WT As Long) As Long
Dim II As Long
Dim JJ As Integer
For II = 1 To CLng(WT * PerSecond)
DoEvents
For JJ = 1 To 100
DoEvents
Next
Next
End Function
经实验,效果非常好。
大家有什么好的方法,请不吝赐教。