TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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)
-
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.
-
también puedes hacer:
if(input(Pin_b1)==0)
{
......
}
-
Ok gracias me estaba faltando el "doble=="
-
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
-
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.
-
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.
-
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
}
-
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!!
-
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.