0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00000100,
0b00000010,
0b00000001};
Suponete que eso esa es la imagen a enviar. Y queres que se dezplace a la izquierda.
Hay 2 formas de hacerlo, uno es que se desplaze a la izquierda y "desaparesca", y la otra es que aparezca a medida que va saliendo por el otro lado.
La que desaparece es "simple". ya que deberias rotar cada dato X cantidad de veces.
for (x=0;x<8;x++)
{
temp = Datos[x] << Rotacion;
ApagoComunes;
EnviodatosAlShift(temp)
EnciendoComunes;
}
Y cada cierto tiempo procedes a modificar Rotacion, de 0 a 1, y ahi vas a tenerlo desplazado 1 lugar a la izquierda, luego 2, y van a ser 2 lugares.
El tema es que se van a ir llenando de 0 a la derecha, por lo cual va a ir "desapareciendo". La otra solucion para que aparezca del otro lado es rotarlos asi:
temp = (Datos[x] << Rotacion) || (Datos[x] >> (8 - Rotacion));
Rotacion va de 0 a 7, ya que 8 volveria a comenzar.. si hacemos esto , por ejemplo con estos datos:
Dato: 10100011
Rotacion: 3
temp va a ser: 00011
101Esos ultimos 3 bits estaban antes al comienzo. y ahi tenes tu rotacion.
Ahora solo tenes que modificar lo que le enviabas al shift register, por el dato rotado, y tambien, deberias hacer algo tal ves con un timer para que vaya incrementando la variable Rotacion.
PD: La mayoria del codigo esta escrito para que lo leas y entiendas, pero no va a funcionar un simple copy & paste.