Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/08/2011 #1


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:

Código PHP:
void main() {
int i=0u=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[u]), pero evidentemente no funciono.
Espero su pronta respuesta.
Desde ya gracias.
Saludos
24/08/2011 #2


para que no ocupe tanta memoria tenes q programar a bajo nivel con assembler, fijate de aprenedr con el mplab
09/02/2012 #3


matrices de led´s con vectores
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
11/02/2012 #4


oigan amigo sera que me pueden ayudar a programar una matriz de led de 7x30 pero es en mikro c y la verdad soy prinsipiante en mikro c y si pueden mandenme un correo a fausto_519@hotmail.com gracias
12/02/2012 #5


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
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.