Autor Tema: Problemas con secuenciador de luces  (Leído 2980 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado deruboy

  • PIC10
  • *
  • Mensajes: 8
Problemas con secuenciador de luces
« en: 02 de Marzo de 2006, 17:44:00 »
Amigos, tengo un problema con el secuenciador de luces que estoy realizando, ya que al escoger la secuencia que quiero que se muestre, me sale pero ademas me salen otras secuencias. Es como si interviniera otra subrutina a la cual no he llamado. Estoy controlado las secuencias con un DSWITCH. Si alguien me puede ayudar se lo agradezco. Ahi les va el programa:





/***********************************************************
*      Programa para encender y apagar led en secuencias.
*      
*      
************************************************************
*/
//--- Librerias empleadas
#include<pic.h>
#include "delay.c"
//#include<stdio.c>
//#include   "math.h"


/************ Variables asiganas a puertos ***************/
static volatile bit   RP0 @ (unsigned)&PORTB*8+0;


/************ Variables globales ***************/
int time;            



/**************************************************
*       Programa principal                *****
***************************************************
*/

void main( void)
{

// ******* Configuracion de puertos *****
   TRISB = 0b00000000;
   TRISC = 0b00000000;
   TRISA = 0b11111100;
   TRISD = 0b11111111;   

   time=1500;

      do{

      if (RD4==0 && RD3==0 && RD2==0 && RD1==0 && RD0==0)

         {   
            PORTB=0b11111111;   // Comienzo.
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   // Primera Secuencia
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b11111110;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111101;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111011;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11110111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11101111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11011111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b10111111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b01111111;   
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;
             delayMs(time);
         }

      else if (RD4==0 && RD3==0 && RD2==0 && RD1==0 && RD0==1)

         {
            PORTB=0b11111111;   //   Segunda Secuencia.
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b01111111;   
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b10111111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11011111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11101111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11110111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111011;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111101;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111110;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=0;   
             delayMs(time);
            PORTB=0b11111111;   //Reset.
            RA0=1;
            RA1=1;
            delayMs(time);
         }

      else if (RD4==0 && RD3==0 && RD2==0 && RD1==1 && RD0==0)

         {
            PORTB=0b11111111;   // Tercera Secuencia.
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b01111110;   
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b10111101;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11011011;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11100111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11011011;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b10111101;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b01111110;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=0;
            RA1=0;
             delayMs(time);
         }

      else if (RD4==0 && RD3==0 && RD2==0 && RD1==1 && RD0==1)

         {
            PORTB=0b11111111;   // Cuarta Secuencia.
            RA0=1;
            RA1=0;
            PORTB=0b11111110;   
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111101;
            RA0=1;
            RA1=0;
             delayMs(time);
            PORTB=0b11111010;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11110101;
            RA0=1;
            RA1=0;
             delayMs(time);
            PORTB=0b11101010;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11010101;
            RA0=1;
            RA1=0;
             delayMs(time);
            PORTB=0b10101010;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=0;
             delayMs(time);
            PORTB=0b10101010;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b10101011;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b01010111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b10101111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b01011111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b10111111;   
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b01111111;   
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;
             delayMs(time);
         }
      
      else if (RD4==0 && RD3==0 && RD2==1 && RD1==0 && RD0==0)

         {
            PORTB=0b00000000;   // Quinta Secuencia.
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=1;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;
             delayMs(time);
         }

      else if (RD4==0 && RD3==0 && RD2==1 && RD1==0 && RD0==1)

         {
            PORTB=0b11111111;   // Sexta Secuencia.
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b01111111;   
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00111111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00011111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00001111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000011;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000001;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b00000001;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000011;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00000111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00001111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00011111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b00111111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b01111111;
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   
            RA0=0;
            RA1=1;
             delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;
             delayMs(time);
         }

      else if (RD4==0 && RD3==0 && RD2==1 && RD1==1 && RD0==0)

         {
            PORTB=0b11111111;   // Septima Secuencia.
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b00111111;   
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b00111100;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b00001100;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b00011000;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b00111100;
            RA0=0;
            RA1=0;
             delayMs(time);
            PORTB=0b01111110;   
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b11111111;      
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b11111111;   // Reset.   
            RA0=1;
            RA1=1;
            delayMs(time);
         }

      else if (RD4==0 && RD3==0 && RD2==1 && RD1==1 && RD0==1)

         {
            PORTB=0b11111111;   // Octava Secuencia.      
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b01111111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11110111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11011111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111110;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b10111111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111011;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11101111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111101;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111111;      
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b00000000;   
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;   
            delayMs(time);
         }      

      else if (RD4==0 && RD3==1 && RD2==0 && RD1==0 && RD0==0)
   
         {
            PORTB=0b00111111;   // Novena Secuencia.
            RA0=0;
            RA1=1;
            PORTB=0b00011111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11000111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11100011;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111000;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111100;
            RA0=1;
            RA1=0;
            PORTB=0b11000111;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b00000000;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11100111;
            RA0=1;
            RA1=1;   
            delayMs(time);
            PORTB=0b11011011;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b10111101;   
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b01111110;
            RA0=1;
            RA1=1;      
            delayMs(time);
            PORTB=0b11111111;
            RA0=0;
            RA1=0;
            PORTB=0b01010101;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;
            delayMs(time);
         }

      else if (RD4==0 && RD3==1 && RD2==0 && RD1==0 && RD0==1)

         {
            PORTB=0b01010101;   // Decima Secuencia.
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b10101010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b10101010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b10101010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b10101010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b11111111;   // Reset.
            RA0=1;
            RA1=1;
            delayMs(time);
         }
   
      else if (RD4==0 && RD3==1 && RD2==0 && RD1==1 && RD0==0)
         
         {
            PORTB=0b01111111;   // Undecima Secuencia.
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b01011111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b01010111;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b01010101;
            RA0=1;
            RA1=0;
            PORTB=0b01010100;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b01010000;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b01000000;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b00000000;
            RA0=1;
            RA1=0;
            delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=1;
            delayMs(time);
         }         

      else if (RD4==0 && RD3==1 && RD2==0 && RD1==1 && RD0==1)

         {
            PORTB=0b00000000;   // Duodecima Secuencia.
            RA0=0;
            RA1=0;
            delayMs(time);
            PORTB=0b00000000;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b00000010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b00001010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b00101010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b10101010;
            RA0=0;
            RA1=1;
            delayMs(time);
            PORTB=0b10101010;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11101010;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111010;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111110;
            RA0=1;
            RA1=1;
            delayMs(time);
            PORTB=0b11111111;
            RA0=1;
            RA1=1;
            delayMs(time);
         }

      else
         {
            PORTB=0b11111111;
         }
      
      } while (1);

}

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Problemas con secuenciador de luces
« Respuesta #1 en: 02 de Marzo de 2006, 17:50:00 »
Hola, antes de leerme semejante código dejame decirte que si recuerdo bien, la función delayMs() recibe como argumento una variable de 1 solo byte, osea un short int, osea un valor de 0 a 255.  Tu le estas mandando "time" el cual vale 1500...

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado deruboy

  • PIC10
  • *
  • Mensajes: 8
RE: Problemas con secuenciador de luces
« Respuesta #2 en: 02 de Marzo de 2006, 22:20:00 »
la verdad no se que decirte. En realidad este es mi primer programa. Estoy en la clase de microcontroladores de mi universidad. Tu me sugieres que le baje al tiempo para probar??? Porque yo parti de la base que me dio mi profesor, y en ese programa el time era igual a 1000. Ademas yo estoy llamando otro programa en c, que es uno que viene con el programa, delay.c. En realidad el codigo no tiene nada que leer, puesto que si uno de los if esta bien, los demas lo estaran. Es un codigo repetido. Te agradezco tu ayuda



Andres
Cartagena, Colombia.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Problemas con secuenciador de luces
« Respuesta #3 en: 03 de Marzo de 2006, 05:18:00 »
Escrito originalmente por deruboy
la verdad no se que decirte. En realidad este es mi primer programa. Estoy en la clase de microcontroladores de mi universidad. Tu me sugieres que le baje al tiempo para probar??? Porque yo parti de la base que me dio mi profesor, y en ese programa el time era igual a 1000. Ademas yo estoy llamando otro programa en c, que es uno que viene con el programa, delay.c. En realidad el codigo no tiene nada que leer, puesto que si uno de los if esta bien, los demas lo estaran. Es un codigo repetido. Te agradezco tu ayuda



Andres
Cartagena, Colombia.


No se en que estaras acostumbrado a programar pero en cualquier lenguaje una función recibe "parámetros" de cierto tipo.

Fijate en el manual del CCS, si no me equivoco la función delay_ms recibe un parámetro de 0 a 255.  Tal vez fue un descuido de tu profesor porque un compilador, en el mundo embedded, en general no avisa de esos errores.

En este caso, los parámetros son de tipo "short int" por lo cual le puedes enviar 0 a 255.  Un overflow de ese dato, hará que el compilador o bien trunque el valor o bien derive en algún tipo de error.

A lo que iba es que si el delay es pequeño tu verás la secuencia tan rápido que tus ojos no podrán notar el cambio.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Problemas con secuenciador de luces
« Respuesta #4 en: 03 de Marzo de 2006, 06:30:00 »
No creo que sea CCS mas bien creo que es hi-tech el compilador usado esta vez....y el delay_ms yo lo he puesto a 500 que seria medio segundo y ha funcionado!Revisa los if-else...


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado deruboy

  • PIC10
  • *
  • Mensajes: 8
RE: Problemas con secuenciador de luces
« Respuesta #5 en: 04 de Marzo de 2006, 10:27:00 »
si. mi compilador es hi-tech. he revisado los if y los else pero me parece que estan bien. Ya que es mi primer codigo, puede que algo este mal pero no lo encuentro.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
RE: Problemas con secuenciador de luces
« Respuesta #6 en: 04 de Marzo de 2006, 12:13:00 »
Hola deruboy!!

Puede que esté equivocado pero por si acaso mira esto:
Codigo:

if(dsfsdfsdfsdfsf)
{
     ewrewrer;
     werewrewr;
}
else
{
     if(sdfsdfsdfsdf)
     {
          dfsdfsdf;
          dfgfdgdfg;
     }
     else
     {
          if(dfgdfsd)
          {
               fdgdfgdf;
               dsfdsf;
          }
          else
          {
               dededede;
               dfdfd;
          }
     }
}
.
.
.
.
.




Es esto lo que quieres hacer??? Si es así pégale un vistazo a las llaves "}".Si no es esto lo que deseas hacer no pongas los "else". No los necesitas.

Por cierto con el compilador hi-tech no se pero... con el CCS la función delay_ms solo admite (como dice el colega maunix) unsigned int. Siendo imprevisible el resultado si le metes un número más grande.

Por probar no se pierde nada.


Un saludo desde Alicante.

Desconectado deruboy

  • PIC10
  • *
  • Mensajes: 8
RE: Problemas con secuenciador de luces
« Respuesta #7 en: 05 de Marzo de 2006, 15:36:00 »
Por lo  pronto, lo del delay no es. Le puse 100 y tampoco funciono como queria. Parece que los if no estuvieran cerrando sus secuencias. En el hi tech el delay funciona con mas de 255, esto se refleja en la rapidez con que cambian de estado los leds. Si alguien cree que aqui el "else if"no funciona en hi-tech o en forma global con los microcontroladores, por favor diganme cual seria la manera correcta.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Problemas con secuenciador de luces
« Respuesta #8 en: 05 de Marzo de 2006, 21:55:00 »
Escrito originalmente por deruboy
Por lo  pronto, lo del delay no es. Le puse 100 y tampoco funciono como queria. Parece que los if no estuvieran cerrando sus secuencias. En el hi tech el delay funciona con mas de 255, esto se refleja en la rapidez con que cambian de estado los leds. Si alguien cree que aqui el "else if"no funciona en hi-tech o en forma global con los microcontroladores, por favor diganme cual seria la manera correcta.


Amigo sigo estando vago para leer todo ese código,  pero fijate lo siguiente:


Esta línea no es lo mismo que leer el puerto D y luego comprar con una variable de 8 bits? Imaginemos que solo queremos los 5 bits menos significativos,  de RD4 a RD0.  Yo que tu haría asi:

Codigo:

unsigned int tempportd;

temp = PORTD & 0x1F   // borramos los bits mas significativos


//  reemplazo de if (RD4==0 && RD3==0 && RD2==0 && RD1==0 && RD0==0)
if (tempportd == 0b00000000) {...}


//if (RD4==0 && RD3==0 && RD2==0 && RD1==0 && RD0==1)
if (tempportd == 0b00000001) {...}


//if (RD4==0 && RD3==0 && RD2==0 && RD1==1 && RD0==0)
if (tempportd == 0b00000010) {...}






Es más hasta en vez de hacer tantos if then.... podrias hacer un "case" con la variable tempportb y eso te resolvería todo


Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado deruboy

  • PIC10
  • *
  • Mensajes: 8
RE: Problemas con secuenciador de luces
« Respuesta #9 en: 09 de Marzo de 2006, 08:28:00 »
Mauricio, el problema es que ademas de usar los bits menos significativos, tambien debo usar los bits mas significativos, pero estos me servirian para escoger la velocidad o time.

Desconectado deruboy

  • PIC10
  • *
  • Mensajes: 8
RE: Problemas con secuenciador de luces
« Respuesta #10 en: 18 de Marzo de 2006, 13:53:00 »
Amigos, ya encontre el error. Era de conexion. Solo habia que colocar las resistencias de pull down en los pines del microcontrolador. Perdon, pero es que soy un poco novato.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Problemas con secuenciador de luces
« Respuesta #11 en: 20 de Marzo de 2006, 05:04:00 »
Escrito originalmente por deruboy
Amigos, ya encontre el error. Era de conexion. Solo habia que colocar las resistencias de pull down en los pines del microcontrolador. Perdon, pero es que soy un poco novato.


Lo importante es que hayas resuleto el problema y aprendido que en los microcontroladores no siempre el problema es del software... es una cuestión nueva para quienes vienen del mundo de las pcs o que están acostumbrados a programar donde la pc ya anda por si sola.

Al pasarse a los pics uno piensa que siempre el problema es del software cuando en realidad mucho tiene que ver el mal armado y diseño del hardware.

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Problemas con secuenciador de luces
« Respuesta #12 en: 20 de Marzo de 2006, 06:31:00 »
Quien se va leer ese codigo!!

Por cierto, en un delay_ms se puede usar mas que un "byte", perfectamente puedes hacer una pausa de 5 seg (delay_ms(5000)).

Otra cosa, creo que deberías mirar algo de principios de programación, lo que son bucles y demás.

Creo que con un for o un while, harias ese programa en 4 lineas...
Si juegas contra el mejor, pierdes como los demás.


 

anything