Delay microseconds in VB 6.0
Delay microseconds in VB 6.0
(OP)
Hi, I have a chaallenge of generate a microseconds delay in Visual Basic, I know how to generate delay on the order of milliseconds (see below) but is too long for my application. Does anyone know how to generate this microsecond delay on Visual Basic 6.0.
Thanks
JM
Thanks
JM





RE: Delay microseconds in VB 6.0
I would use hardware to generate microsecond timing. You will also need to bear in mind that most I/O stuff is interrupt driven so its timing will be subject to stack timing issues.
Good Luck
johnwm
________________________________________________________
To get the best from these forums read FAQ731-376 before posting
UK steam enthusiasts: www.essexsteam.co.uk
RE: Delay microseconds in VB 6.0
Crescent Softwware Inc
RE: Delay microseconds in VB 6.0
under WINDOWS you are out of luck...
<nbucska@pcperipherals DOT com> subj: eng-tips
read FAQ240-1032
RE: Delay microseconds in VB 6.0
You need only unhook the operating system (suspend) and take control of the processor for your timing software.
This task needs to be more clearly defined (duration).
RE: Delay microseconds in VB 6.0
If that is not the case, then all of XP security could be simply bypassed.
Good Luck
johnwm
________________________________________________________
To get the best from these forums read FAQ731-376 before posting
UK steam enthusiasts: www.essexsteam.co.uk
RE: Delay microseconds in VB 6.0
CODE
;where uSecs% is the number of microseconds to pause
;Note: Maximum acceptable value is 27,500 microseconds.
; Checking is performed on entry.
.Model Medium,BASIC
.Code
Pause Proc, uSecs:Ptr
push si
mov si,uSecs ;get the address for uSecs%
lodsw ;put the number of microseconds into AX
cmp ax,27500 ;exit if value out of range
ja exit
mov bx,25 ;calculate number of timer
mul bx ; cycles equivalent to the
mov bx,21 ; specified number of
div bx ; microseconds
mov bx,ax ;transfer result to BX
;Disable timer 2.
in al,61h ;clear bit 0 of I/O port 61h
jmp short $+2
and al,0FEh
out 61h,al
jmp short $+2
;Initialize timer 2 for mode 0 operation with word-size initial count.
cli ;disable interrupts
mov al,0B0h ;output control byte
out 43h,al
jmp short $+2
mov al,bl ;send low byte of count
out 42h,al
jmp short $+2 ;tiny delay
mov al,bh ;then the high byte
out 42h,al
jmp short $+2 ;tiny delay
;Reinitialize timer 0 to make sure a time-of-day interrupt doesn't occur.
mov al,36h ;mode 3 with word-size divisor
out 43h,al
jmp short $+2
xor al,al ;set interrupts for every
out 40h,al ; 65,536 cycles
jmp short $+2
out 40h,al
jmp short $+2
sti ;enable interrupts
;Start the countdown by enabling timer 2.
in al,61h ;set bit 0 of I/O port 61h
jmp short $+2
or al,01h
out 61h,al
jmp short $+2
;Loop until the count has reached zero.
readloop:
mov al,80h ;latch timer 2
out 43h,al
jmp short $+2 ;tiny delay
in al,42h ;read count
jmp short $+2 ;tiny delay
mov ah,al
in al,42h
jmp short $+2 ;tiny delay
xchg al,ah
or ax,ax ;loop if count hasn't
jns readloop ; reached zero
Exit:
pop si
Ret ;return to VBASIC
Pause Endp
End
RE: Delay microseconds in VB 6.0
Good Luck
johnwm
________________________________________________________
To get the best from these forums read FAQ731-376 before posting
UK steam enthusiasts: www.essexsteam.co.uk
RE: Delay microseconds in VB 6.0
Thanks and I hope someone could help
JM
RE: Delay microseconds in VB 6.0
The assembler code disables interrupts and takes control of the intel compatible CPU instruction set. Other source code languages such as MASM, C+, FORTRAN etc. may be called from VB6. The ASM code above shows how to achieve usec delays if you want to write your own code. A similar project is found at
http://www.seattlerobotics.org/encoder/200106/16cs...
My first response of using Crescent Software's QuickPAK or PDQcomm is easier (call someone elses library they wrote),
or you can search the internet and find several other pay solutions;
http://www.experts-exchange.com/Programming/Q_2084...
http://c.ittoolbox.com/groups/groups.asp?v=access-...
or a different forum;
http://forums.devshed.com/forumdisplay.php?s=d0b57...
RE: Delay microseconds in VB 6.0
Good Luck
johnwm
________________________________________________________
To get the best from these forums read FAQ731-376 before posting
UK steam enthusiasts: www.essexsteam.co.uk