FAQ FAQ  •  Buscar Buscar  •  Registrarse Registrarse  •  Entre para ver sus mensajes privados Entre para ver sus mensajes privados  • Login Login

Ayuda con un programa que no funciona.

Índice de los Foros Electronica Facil » FOROS ELECTRONICA » Electronica Digital
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
AutorMensaje
dabyziyo
Asunto: Ayuda con un programa que no funciona. MensajePublicado: 31 Dic, 2006 - 11:19
Nuevo en el Foro
Nuevo en el Foro


Registrado: 10 May, 2006
Mensajes: 15

Tengo un porblema, y esque quiero hacer unos leds parpadeantes con varios modos, aunque de momento he probado con 3 modos y 15 leds, en grupos de 3 en paralelo.
He usado un Pic16f84a.
El problema es que nunca había programado en C, y hice un porgrama para el michochip.
Los leds funcionan, pero únicamente hace un barrido de funciones 2 y 3 y se apagan.
Al reiniciarle, vuelve a funcionar, hace lo mismo y de nuevo se apagan.

Os paso el código de programación, para que algún experto le eche un vistazo, a ver qué me puede decir:



#include <16F84A.h>
#fuses XT,NOWDT
#use delay(clock=4000000)

#define L3 PIN_A3
#define L2 PIN_A2
#define L1 PIN_A1
#define L4 PIN_A0
#define L5 PIN_B3



#define ON output_high
#define OFF output_low
#define P1 PIN_B1
#define P2 PIN_B2

int modo=1;
int vel=500;

void main()
{


if(!input(P1))

{if (modo=3)
{
modo=1;
}
else
{
switch (modo)
{
case 1: modo=1;
case 2: modo=2;
case 3: modo=3;
}
}
}

if(!input(P2))

{if (vel=200)
{
vel=500;}
else
{
switch (vel)
{
case 1: vel=500;
case 2: modo=300;
case 3: modo=200;
}
}
}


if(modo=1)
{
on (L1);
on (L2);
on (L3);
on (L4);
on (L5);
delay_ms(70);
off (L1);
off (L2);
off (L3);
off (L4);
off (L5);
delay_ms(vel);
}

if (modo=2)
{
on (L1);
on (L3);
on (L5);
delay_ms(70);
off (L1);
off (L3);
off (L5);
delay_ms(vel);
on (L2);
on (L4);
delay_ms(70);
off (L2);
off (L4);
delay_ms(vel);
}

if (modo=3)
{
on (L1);
delay_ms(70);
off (L1);
on (L2);
delay_ms(70);
off (L2);
on (L3);
delay_ms(70);
off (L3);
on (L4);
delay_ms(70);
off (L4);
on (L5);
delay_ms(70);
off (L5);
}
}



Como podéis ver, el primer modo es todos los leds parpadeando a la vez.
El segundo modo, parpadean primero los leds impares y luego los pares.
Y el tercero es que van luciendo uno por uno.

El pulsador uno es para cambier el modo y el pulsador 2 para cambiar la velocidad.

Gracias por vuestra ayuda, os agradecería que revisarais el código y me dijerais qué debo corregir o mejor aún, que me pasarais el código corregido.

Muchas gracias, y siento ser tan pedigueño.
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Ami603
Asunto:  MensajePublicado: 22 Ene, 2007 - 01:47
Nuevo en el Foro
Nuevo en el Foro


Registrado: 22 Ene, 2007
Mensajes: 1

Hola. el problema es que el bloque main se ejecuta de principio a fin y acaba el programa.
No hice nada con microcontroladores aun pero supongo que entrando todo el codigo de main en medio de un bucle que siempre sea cierto,o que se cumpla mientras no tengas una señal externa para interrumpirlo.

el codigo quedaria asi:

void main()
{
while(1) // o cualquier señal de entrada que quieras
{
// entra aqui todo el bloque de codigo que tenias en main
}
}

espero que te funcione
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
 Índice de los Foros Electronica Facil » FOROS ELECTRONICA »  Electronica Digital
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2025Información Legalpoliticas de cookiesipv6 ready