Symbol data = PORTB.7 'dato de los decimales
Symbol clock = PORTB.6
Dim d As Byte 'para la aplicacion for de los decimales
Dim u As Byte 'para la aplicacion for de las unidades
Dim i As Byte 'para la aplicacion for de envio de datos
Dim e As Byte 'para la aplicaciof for de envio de datos
Dim dec As Byte 'almacenaremos los datos decimales
Dim und As Byte 'almacenaremos los datos de las unidades
TRISA = 0 'puerto a como salidas
TRISB = 0 'puerto b como salidas
PORTA = 0 'puerto a apagado
PORTB = 0 'puerto b apagado
main:
For d = 0 To 9 'decimales del 0 al 9
dec = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), d 'buscamos el decimal
For u = 0 To 9 'unidades del 0 al 9
und = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), u 'buscamos la unidad
PORTA.0 = 0 'apagamos porta para enviar los datos
Gosub enviar2 'enviamos primero los datos de las unidades
Gosub enviar1 'luego enviamos los datos de los decimales
PORTA.0 = 1 'encendemos los display
WaitMs 100 'esperamos 100ms para ver el cambio rapido
Next u 'siguiente unidad
Next d 'cuando acaba de escribir todas las unidades escribe un decimal mas y vuelve a escribir 9 unidades
Goto main 'hacemos un bucle
End 'finalizamos el programa
enviar1: 'sub enviar1, enviamos los datos decimales
For i = 0 To 7 'enviamos 8 bit de datos
If dec.0 = 0 Then 'si el bit 0 de la variable dec es igual a 0
data = 0 'envia un cero logico
clock = 0 'porque el display ahora se enciende con un uno logico
WaitUs 2 'en el registro de desplazamiento
clock = 1 '
WaitUs 2 '
Else
data = 1 'envia un uno logico
clock = 0 '...lo explicado antes
WaitUs 2 '
clock = 1 '
WaitUs 2 '
Endif 'finalizamos la funcion if
dec = ShiftRight(dec, 1) 'desplazamos un bit hacia la derecha
Next i 'next, para enviar el siguiente bit
dec = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), d 'como la variable dec ha sido modificada debemos hacer que sea como anteriormente porque sino solo nos enviara 0
Return 'volvemos a la rutina
enviar2: 'sub enviar2, enviamos los datos de las unidades
For e = 0 To 7 'enviamos 8 bit de datos
If und.0 = 0 Then 'si el bit 0 de la variable und = 0
data = 0 'envia un cero logico
clock = 0 'por que el display se enciende con un uno logico
WaitUs 2 'en el registro de desplazamiento
clock = 1 '
WaitUs 2 '
Else
data = 1 'envia un uno logico
clock = 0 '...lo explicado anteriormente
WaitUs 2 '
clock = 1 '
WaitUs 2 '
Endif 'finalizamos la funcion if
und = ShiftRight(und, 1) 'desplazamos un bit hacia la derecha
Next e 'next para enviar el siguiente bit
Return 'volvemos a la rutina