Público Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal valor As Integer)
'---CONSTANTE PARA LPT1 DIRECCIÓN---
Pública Const IndirizzoData As String = "& H378" ' registro de datos: 8 bits
'-------------------------------------------------------GLOBAL VARIABLES----------------------------------------------------
Público StatoCubo(1 To 8, 1 To 64) As Integer ' variable que contiene el estado actual del cubo
'-------------------------------------------------------------FUNCTIONS--------------------------------------------------------
ScriviCubo(NumeroCicli As Integer) función pública ' función para escribir en el cubo el estado almacenado en la matriz de StatoCubo
Dim ByteLpt como Byte
Dim ContaLivelli como entero
Dim ContaLed como entero
Dim ContaCicli como entero
Para ContaCicli = 1 NumeroCicli
Para ContaLivelli = 1 a 8
' establece todos los bits de reg. cambio de columnas sin registrar en el registro de cambio de capas y desactivar siempre borra todo pins (xx 01 x _1_)
Para ContaLed = 64 a 1 Step -1 ' para ContaLed = 1 a 64
' SHIFT REG. CAPAS:
' MSB (D5) = 0--> reloj desactiva
' CENTRAL (D4) = 1 (valore = 16)--> discapacitados claro
' LSB (D3) = no importante
' SHIFT REG. LED:
' MSB (D2) = 0--> reloj desactivado
' CENTRAL (D1) = 1 (valore = 2)--> discapacitados claro
' LSB (D0) = StatoCubo (ContaLivelli, ContaLed)
ByteLpt = (0 + 16 + 0) + (0 + 2 + StatoCubo (ContaLivelli, ContaLed))
Llamar ClokkaLed(ByteLpt) ' enviar el valor en función de que 1 la señal de reloj a la reg. de cambio de las columnas
Siguiente ContaLed
' SHIFT REG. CAPAS:
' MSB (D5) = 0--> reloj desactivado
' CENTRAL (D4) = 1 (valore = 16)--> discapacitados claro
' LSB (D3) = (si capa = 1--> 1(value=8); si <> capa 1--> 0)--> set 1 sólo la primera vez
' SHIFT REG. LED:
' MSB (D2) = 0--> reloj desactivado
' CENTRAL (D1) = 1 (valore = 2)--> discapacitados claro
' LSB (D0) = no importante
Si ContaLivelli = 1 Then ' si Im fijar la primera capa envío un 1 en el registro de cambio de capas, después le enviaré sólo la señal de reloj
ByteLpt = (0 + 16 + 8) + (0 + 2 + 0)
Otra cosa
ByteLpt = (0 + 16 + 0) + (0 + 2 + 0)
End If
Llamar ClokkaLivello(ByteLpt) ' enviar el valor a la función que dan una señal de reloj a la reg. de cambio de capas
Llamar Aspetta(60000) ' llamada a la función para generar un retardo (el cubo deja de parpadear desde 60.000 a 70,000 ciclos)
Próximo ContaLivelli ' reiniciar el ciclo para fijar la capa siguiente
Llame a ClearAll ' llamada de la función para activar en todo registro de desplazamiento (apagar todos los leds)
Siguiente ContaCicli
End Function
Función pública ClokkaLed (Valore como bytes)
A Val(IndirizzoData), Val(Valore) ' reloj de discapacitados
' Añadir 4 porque quiero establecer en 1 el bit de reloj de cambio de registro de columnas para dar la señal de reloj
A Val(IndirizzoData), Val(Valore + 4) ' reloj activado
End Function
Función pública ClokkaLivello (Valore como bytes)
A Val(IndirizzoData), Val(Valore) ' reloj de discapacitados
' Añadir 32 porque quiero establecer en 1 el bit de reloj de registro de cambio de capas para dar la señal de reloj
A Val(IndirizzoData), Val(Valore + 32) ' reloj activado
End Function
ClearAll() de la función pública ' registro de función para activar el pin claro en cambio todos
Dim ByteLpt como Byte
' registro de habilitación en cambio todos (valor = 0) (xx x0x x0x)
ByteLpt = 0 ' 00 000 000
A Val(IndirizzoData), Val(ByteLpt)
End Function
Público función Aspetta(Ncicli As Long) ' función que se utiliza para retrasar el ciclo de actualización de las capas de cada
Dim Contatore mientras
Dim tiempo Contato
Para Contatore = 0 para Ncicli
Contato = Contatore ' operación de asignación (sólo hacer una CPU en modo de)
Contatore siguiente
End Function