TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ingsil en 18 de Febrero de 2013, 23:23:04
-
Hola a todos,
Alguien sabe como se puede pasar como argumento un puerto del PIC. que tipo de variable debe ser pin para poder recibir
void wait_to_high(int16 const pin){
delay_us(3); /* account for fall time */
while(!input_state(pin));
}
void main ()
{
wait_to_high(PORT_B5);
}
Me da el siguiente error en el argumento del while
A numeric expression must appear here
-
Si declaras "pin" como constante (const), declaras esa variable como inalterable, además en C, si pasas un nombre de campo en vez de un puntero, en realidad se está pasando una copia de ese campo, por lo tanto tampoco te va a cambiar (como tú esperas) en la función wait_to_high.
Pasa PORT_B5 como la dirección que almacena ese campo (&PORT_B5), y recíbela en la función como un puntero (int16 *pin).
-
Si declaras "pin" como constante (const), declaras esa variable como inalterable, además en C, si pasas un nombre de campo en vez de un puntero, en realidad se está pasando una copia de ese campo, por lo tanto tampoco te va a cambiar (como tú esperas) en la función wait_to_high.
Pasa PORT_B5 como la dirección que almacena ese campo (&PORT_B5), y recíbela en la función como un puntero (int16 *pin).
Hola gracias por tu ayuda, pero ya he probado esa forma pero igual me da error...
lo que pasa es que PORT_B5 es una definicion. #define PORT_B5 31757
PORT_B5 no es una variable.
Me da un error en
wait_to_high(&PIN_B5);
dice: expecting an identifier
y otro error en
while(!input_state(pin));
dice: Expression must evaluate to a constant
Te agradeceria cualquier ayuda