Ayuda en MikroC Matriz de LED

Hola gente soy nuevo en el foro y también en este tema de los PIC'S. Y para iniciarme en el asunto empece a usar MikroC porque estudio electronica y me es muy comodo empezar con un lenguaje que ya me es muy familiar.
La cuestión es que como recien estoy empezando en el asunto quería pedirle ayuda porque tengo muchos problemas para optimizar los algoritmos.
Ahora mismo para hacer un helloworld un poco mas interesante estoy haciendo una matriz que hace un grupo de movimientos ordenados.
En fin este es el código:

PHP:
void main() {
int i=0, u=0;
TRISA=0;
TRISB=0;
while (1)
         {
         PORTA.F1=1;
         PORTA.F1=1;
         PORTA.F2=1;
         PORTA.F3=1;
         PORTB.F0=1;
         PORTB.F1=0;
         PORTB.F2=0;
         PORTB.F3=0;
         PORTB.F4=0;
         PORTB.F5=0;
         PORTB.F6=0;
         PORTB.F7=0;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=1;
         PORTB.F2=0;
         PORTB.F3=0;
         PORTB.F4=0;
         PORTB.F5=0;
         PORTB.F6=0;
         PORTB.F7=0;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=0;
         PORTB.F2=0;
         PORTB.F3=1;
         PORTB.F4=0;
         PORTB.F5=0;
         PORTB.F6=0;
         PORTB.F7=0;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=0;
         PORTB.F2=1;
         PORTB.F3=0;
         PORTB.F4=0;
         PORTB.F5=0;
         PORTB.F6=0;
         PORTB.F7=0;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=0;
         PORTB.F2=0;
         PORTB.F3=0;
         PORTB.F4=1;
         PORTB.F5=0;
         PORTB.F6=0;
         PORTB.F7=0;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=0;
         PORTB.F2=0;
         PORTB.F3=0;
         PORTB.F4=0;
         PORTB.F5=1;
         PORTB.F6=0;
         PORTB.F7=0;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=0;
         PORTB.F2=0;
         PORTB.F3=0;
         PORTB.F4=0;
         PORTB.F5=0;
         PORTB.F6=0;
         PORTB.F7=1;
         Delay_ms (200);
         PORTB.F0=0;
         PORTB.F1=0;
         PORTB.F2=0;
         PORTB.F3=0;
         PORTB.F4=0;
         PORTB.F5=0;
         PORTB.F6=1;
         PORTB.F7=0;
         Delay_ms (200);
         }
}

Como veran lo que ocurre es que la luz del led va recorriendo la matriz de 4X2 en movimiento zigzag.
Si bien el programa funciona, ya me comio un 15% de la ROM del micro (estoy usando el PIC 16F84A, debido a que me es el mas facil y barato conseguir en estos momentos).
Quería saber si alguien podría brindarme alguna idea o herramienta para poder optimizar el código.
Probe asignarles una variable al puerto (PORTB.F), pero evidentemente no funciono.
Espero su pronta respuesta.
Desde ya gracias.
Saludos
 
Última edición por un moderador:
para que no ocupe tanta memoria tenes q programar a bajo nivel con assembler, fijate de aprenedr con el mplab
 
eso es cierto encierta forma, pero tambien ouedes hacerlo por medio de vectores
mira aqui te dejo un ejemplo en el cuel es para pyoyectar un corazon en una matriz de 8x8
 
mira cuate yo tambiensoy nuevo y disculpame pero no podre ayudarte, estoy en otro proyecto con pics, mmm.. y aun no soy tan bueno para chutarme 2.
vi uno echo en ensamblador, la programacion no era ensi loo que hacia que funcionara
mas que todo era la utilizacion de multiplexores.
investiga como podrias utilizarlos.

te adjunto el programa del corazon que se me paso antes

Código:
int y[] = {        //vector corazon 1

0b00110000,
0b01111000,
0b01111100,
0b00111110,
0b01111100,
0b01111000,
0b00110000,
0b00000000 };

int x[] = {         //este vector no se modifica
0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000 };

  


void main ()
{
   int n=8 , i;
   TRISB = 0;
   TRISD = 0;

    while( 1 )
    {
              for(i=0;i<n;i++)
              {
              PORTB= y[i];
              PORTD= x[i];
              Delay_ms(10);

              } //fin del ciclo for


}                                  //fin del ciclo while
}      //fin del programa
 
Última edición por un moderador:
Atrás
Arriba