TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: EDJMM9 en 04 de Agosto de 2012, 16:01:42
-
buenas soy nuevo en el foro y en esto de los pics tengo algunas dudas hasta los momentos se que si escribo
el codigo:
//teniendo conectado un pulsador en el (pin_A1) Y UN led en el (pin_b2) // puedo encender el led pulsando el boton y apagarlo pulsandolo de nuevo. lo probe en proteus y funciona .
while(true){
if(input(pin_A1)==0){
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_b2);
while(input(pin_A1)==0);
//ahora me pregunto como haría para hacer esto con varios pulsadores y varios leds . trabajando independientemente . osea poner un 5 pulsadores en (pin_a0) (pin_a1) (pin_a2) (pin_a3) (pin_a4) y que cada uno controle los leds conectados en los puertos b0 b1 b2 b3 b4
algo asi como:
(pin_a0) enciende y apaga el led qe esta en (pin_b0) //controla on/off el led amarillo//
(pin_a1) enciende y apaga el led qe esta en (pin_b1) //controla on/off el led rojo//
(pin_a2) enciende y apaga el led qe esta en (pin_b2) //controla on/off el led verde// (todos independientemente)
(pin_a3) enciende y apaga el led qe esta en (pin_b3) //controla on/off el led blanco//
(pin_a4) enciende y apaga el led qe esta en (pin_b4) //controla on/off el led azul//
yo ignorantemente pense claro hago el mismo programa de arriba asi
programa en pic c compiler
while(true){
if(input(pin_A0)==0){
delay_ms(30);
if(input(pin_A0)==0)
output_toggle(pin_b0); // led amarillo//
while(input(pin_A0)==0);
}
if(input(pin_A1)==0)
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_b1); // led rojo//
while(input(pin_A1)==0);
if(input(pin_A1)==0)
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_b1); // led verde//
while(input(pin_A1)==0);
}
y asi con los demas
solo que no funciona como yo quiero solo controla el primer led y los demas no :? se que estoy haciendo algo mal en la programacion pero soy nuevo en este idioma mi imagino q es algun problema con las interrupciones . o bueno si hay alguien que me pueda ayudar le agradeceria en el alma :D
-
Hola: EDJMM9
Yo aun soy mas principiante que tu en C,
hazlo asi que si no me equiboco te tirara bien,
el problema lo tenias en que te dejabas las sentencias abiertas.
Comparalo con el tuyo y mira donde esta la diferencia.
Un saludo.
void main()
{
while(true){
if(input(pin_A0)==0){
delay_ms(30);
if(input(pin_A0)==0)
output_toggle(pin_B0); // led amarillo//
while(input(pin_A0)==0);}
if(input(pin_A1)==0){
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_B1); // led rojo//
while(input(pin_A1)==0);}
if(input(pin_A2)==0){
delay_ms(30);
if(input(pin_A2)==0)
output_toggle(pin_B2); // led verde//
while(input(pin_A2)==0);}
}
}
-
buenas soy nuevo en el foro y en esto de los pics tengo algunas dudas hasta los momentos se que si escribo
el codigo:
//teniendo conectado un pulsador en el (pin_A1) Y UN led en el (pin_b2) // puedo encender el led pulsando el boton y apagarlo pulsandolo de nuevo. lo probe en proteus y funciona .
while(true){
if(input(pin_A1)==0){
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_b2);
while(input(pin_A1)==0);
//ahora me pregunto como haría para hacer esto con varios pulsadores y varios leds . trabajando independientemente . osea poner un 5 pulsadores en (pin_a0) (pin_a1) (pin_a2) (pin_a3) (pin_a4) y que cada uno controle los leds conectados en los puertos b0 b1 b2 b3 b4
algo asi como:
(pin_a0) enciende y apaga el led qe esta en (pin_b0) //controla on/off el led amarillo//
(pin_a1) enciende y apaga el led qe esta en (pin_b1) //controla on/off el led rojo//
(pin_a2) enciende y apaga el led qe esta en (pin_b2) //controla on/off el led verde// (todos independientemente)
(pin_a3) enciende y apaga el led qe esta en (pin_b3) //controla on/off el led blanco//
(pin_a4) enciende y apaga el led qe esta en (pin_b4) //controla on/off el led azul//
yo ignorantemente pense claro hago el mismo programa de arriba asi
programa en pic c compiler
while(true){
if(input(pin_A0)==0){
delay_ms(30);
if(input(pin_A0)==0)
output_toggle(pin_b0); // led amarillo//
while(input(pin_A0)==0);
}
if(input(pin_A1)==0)
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_b1); // led rojo//
while(input(pin_A1)==0);
if(input(pin_A1)==0)
delay_ms(30);
if(input(pin_A1)==0)
output_toggle(pin_b1); // led verde//
while(input(pin_A1)==0);
}
y asi con los demas
Me parece que hay muchos condicionales imnecesarios, es mi apreciación, creo que se podria hacer mas sencillo. No te dejo codigo porq utilizo mikroc y las sentencias no son iguales creo.