TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kidpic en 19 de Septiembre de 2009, 21:26:31

Título: como preguntar por el pin
Publicado por: kidpic en 19 de Septiembre de 2009, 21:26:31
Como se puede preguntar si el pin b1 del puerto B esta en cero o si hay un nivel bajo
Muchas gracias!!
antes yo preguntaba por el pin si estaba en uno o nivel alto : if(input(Pin_b1)
 ahora , es correcto hacer esto???
 if(input(Pin_b1=0)
Título: Re: como preguntar por el pin
Publicado por: KALLITOS en 19 de Septiembre de 2009, 21:31:37
Hola, en la ayuda de CCS encontraras las maneras de usar los comandos del compilador.
Para lo que consultas seria:

if(!input(PIN_B1))
{
lo que deseas hacer;
}

Saludos.
Título: Re: como preguntar por el pin
Publicado por: pablomanieri en 19 de Septiembre de 2009, 21:34:01
también puedes hacer:
if(input(Pin_b1)==0)
{
......
}
Título: Re: como preguntar por el pin
Publicado por: kidpic en 19 de Septiembre de 2009, 22:10:59
Ok gracias me estaba faltando el "doble=="
 
Título: Re: como preguntar por el pin
Publicado por: jhozate en 20 de Septiembre de 2009, 01:18:26
bueno ...si mal no recuerdo por ahi don redpic escribio q no era conveniente preguntar por el estado de un bit ya que al hacerlo el tris se cambiaba a entrada...recomendaba utilizar flag para saber si estaba encendido o apagado.

saludos
Título: Re: como preguntar por el pin
Publicado por: Nocturno en 20 de Septiembre de 2009, 04:42:23
Eso depende de si estás usando el modo STANDARD_IO que sí te cambia el TRIS, o el modo FAST_IO donde no toca el TRIS.
Título: Re: como preguntar por el pin
Publicado por: PalitroqueZ en 20 de Septiembre de 2009, 12:56:03
input_state(PIN) no pregunta por el tris

de acuerdo a la ayuda del ccs:


This function reads the level of a pin without changing the direction of the pin as INPUT() does.


Título: Re: como preguntar por el pin
Publicado por: kidpic en 21 de Septiembre de 2009, 22:59:03
Que puedo estar haciendo mal. No me funciona el programita,
 #include <16F877.h>
 #fuses HS,NOWDT,NOPROTECT,NOLVP
 #use delay(clock=20000000) 
 #include <lcd.c> 
 long int pulsos=0;
 void main(void)
{lcd_init();
set_tris_b(0xfe);//Pin RB0 del puerto B como salida, el resto como entrada
 disable_interrupts(global);// Toda las interrupciones desactivadas
do{
   if(input(Pin_b1==0)){  // si se presenta un cero en el pin B1 del puerto
pulsos++;}//incremento la variable
//delay_ms(50);//retardo de incremento
lcd_gotoxy(1,1);//Para escribir siempre en la misma posición
printf(lcd_putc,"pulsos= %lu",pulsos); //presento la variable por el lcd
}while(true); //ciclo infinito
}
Título: Re: como preguntar por el pin
Publicado por: gera en 21 de Septiembre de 2009, 23:04:31
kidpic, por favor identa un poco el codigo asi es mas legible. Cual es el problema? Eso compila y no te funciona? o directamente no compila? Seguro q conectaste correctamente todo en el circuito? Revisaste los pines de alimentacion, el reset, el lcd, etc?
saludos!!
Título: Re: como preguntar por el pin
Publicado por: fabianjsm en 22 de Septiembre de 2009, 01:19:05
Donde haces if(input(Pin_b1==0))... debes hacer if(input(Pin_b1) == 0), o if(!input(Pin_b1)), segun tu gusto ;-)
Compilara sin problemes porque es equivalente a hacer input(0): Pin_b1 se define como 49 en 16F877.h (#define Pin_b1 49), luego 49 == 0 es siempre igual a  0.