Autor | Mensaje |
---|
| Asunto: Ayuda con un programa que no funciona. Publicado: 31 Dic, 2006 - 11:19 |
| 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. |
| |
|
| |  | | Asunto: Publicado: 22 Ene, 2007 - 01:47 |
| 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 |
| |
|
| |  |
|
|