Una pregunta mas, como estas comandando las cosas ? con un registro de desplazamiento ?
Esto seria masomenos tu programa modificado, aunque prefiero que tenga un latch el shift register:
void main(void)
{
while(TRUE)
{
LetraB();
}
}
void letraB(void)
{
for(i=0;i<8;i++)
{
EnviarDatosShiftRegister(0); // Apago todo
output_b(lB[i]); // Valor en puerto
EnviarDatosShiftRegister(A[i]); // Enciendo el correspondiente
delay_ms(50); // Espero
}
}
void EnviarDatoShiftRegister(unsigned int Data)
{
for(o=0;o<8;o++)
{
output_low(CLK);
output_bit(DATO,Data & (1 << o));
output_high(CLK);
}
}
Si pensas hacer mas cosas aparte de eso, vas a tener que revisar lo que es interrupciones y el timer
Si usas el shift register, tambien podes usar el modulo SPI y comunicarte con este con data y clock