Autor Tema: Pasar como argumento un puerto  (Leído 1381 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ingsil

  • PIC10
  • *
  • Mensajes: 2
Pasar como argumento un puerto
« 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

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Pasar como argumento un puerto
« Respuesta #1 en: 19 de Febrero de 2013, 00:33:40 »



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).
« Última modificación: 19 de Febrero de 2013, 00:45:22 por planeta9999 »

Desconectado ingsil

  • PIC10
  • *
  • Mensajes: 2
Re: Pasar como argumento un puerto
« Respuesta #2 en: 19 de Febrero de 2013, 10:34:27 »



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


 

anything