'declarar las variables:
dim PasoAcual1,PasoActual2,LatchPuerto as byte
´Dentro del main deberías:
'Inicializar las variables
'0000AAAA
PasoActual1=%00001100 'indicar paso 1
'0000BBBB
PasoActual2=%00001100 'indicar paso 1
LatchPuerto=%00000000
'Enviar por primera vez los valores a los motores para inicializarlos.
EnviarPasos
'Ahora supongamos que quiero mover uno de los motores...
'Esto "movería" el motor 2 a la derecha...
MoverMotor(1,1)
'Ahora envio al puerto así efectivizo el movimiento
EnviarPasos
'Ahora voy a mover los dos motores a la vez..
'Esto "mueve" el motor 1 a la derecha...
MoverMotor(0,1)
'Esto "mueve" el motor 2 a la izquierda...
MoverMotor(1,0)
'Ahora envio al puerto así efectivizo el movimiento
EnviarPasos
'Listo?:)
sub procedure EnviarPasos()
'Copiar el valor del motor1 a la variable LatchPuerto
LatchPuerto=PasoActual1
'Mover el valor obtenido 4 lugares a la izquierda(XXXXAAAA pasa a ser AAAA0000)
LatchPuerto<<4
'Incorporar el valor del motor2 a la variable LatchPuerto(que ahora será AAAABBBB)
LatchPuerto=LatchPuerto OR PasoActual2
'Escribir el valor obtenido en el puertoB(envia a los puentes H)
PORTB=LatchPuerto
end sub
sub procedure MoverMotor(NumMotor as byte, Direccion as byte)
if(NumMotor=0)
if(Direccion=0) ProxPasoIzq(PasoActual1) else ProxPasoDer(PasoActual1)
else
if(Direccion=0) ProxPasoIzq(PasoActual2) else ProxPasoDer(PasoActual2)
end if
end sub
'DIM?
sub function ProxPasoDer( byref PasoActual as byte)
select case PasoActual
case %00001100
PasoActual=%00000110
case %00000110
PasoActual=%00000011
case %00000011
PasoActual=%00001001
case %00001001
PasoActual=%00001100
end select
end sub
'DIM?
sub function ProxPasoIzq( byref PasoActual as byte)
select case PasoActual
case %00001100
PasoActual=%00001001
case %00001001
PasoActual=%00000011
case %00000011
PasoActual=%00000110
case %00000110
PasoActual=%00001100
end select
end sub