TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: beto0350 en 13 de Noviembre de 2009, 09:02:10

Título: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
Publicado por: beto0350 en 13 de Noviembre de 2009, 09:02:10
    tengo un 18f4550 y no me reconoce si un pin tiene un (0) o un (1), siempre
    reconoce (0).
    No quiero usar la sentencia Button de Mikroc ya que ocupa bastante memoria.
    adjunto una parte del programa y los valores del oscilador.
   
    Alquien tendria alguna sugerencia.
   
    Gracias.
   
    void main(void)
{
     unsigned char a;
     TRISB.F0=1;
     TRISB.F1=0;

     if(PORTB.F0==0) {
      PORTB.F1=1;
     }else {
     PORTB.F1=0;
     }
     while(1);
}



osc = 20 MHz
PPLDIV_5S = ON
CPUDIV_OSC1_PLL2 = ON
USBDIV2 = ON
FOSC_HS_1H
FCMEN_OFF
IESO_OFF
PWRT_ON_2L
BOR_ON_2L
BORV_43_2L
WDT_OFF
WDTPS_256
MCLRE_ON
LPT1OSC_OFF
PBADEN_OFF
CCP2MX_ON
STRVEN_ON
LVP_OFF
XINST_OFF
Título: Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
Publicado por: Nocturno en 13 de Noviembre de 2009, 09:33:11
Prueba esto:

   void main(void)
{
     unsigned char a;
     TRISB.F0=1;
     TRISB.F1=0;

     while(1)
     if(PORTB.F0==0) {
      PORTB.F1=1;
     }else {
     PORTB.F1=0;
     };
     
}
Título: Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
Publicado por: beto0350 en 13 de Noviembre de 2009, 10:06:21
Gracias por tu pronta respuesta.
Me di cuenta del que problema que tenia era que me tomaba los ADC y/o los comparadores, porque
probe con el TRISB.F5 en lugar del TRISB.F0 y funciona.

Gracias
Título: Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
Publicado por: MLO__ en 13 de Noviembre de 2009, 10:08:38
   void main(void)
{
     unsigned char a;
     TRISB.F0=1;
     TRISB.F1=0;

     if(PORTB.F0==0) {
      PORTB.F1=1;
     }else {
     PORTB.F1=0;
     }
     while(1);//*
}

Resulta que el PIC se queda enclavado en el bucle infinito que has puesto, como lo pone el maestro Nocturno, el escaneo del pin se realiza dentro del bucle infinito.

Saludos
Título: Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
Publicado por: bigluis en 17 de Diciembre de 2009, 20:54:49
     if(PORTB.F0==0) {
      PORTB.F1=1;
     }else {
     PORTB.F1=0;
     }

En MikroC no es necesario preguntar si el bit es igual a 1 o 0 solo necesitas hacer lo siguiente
Código: [Seleccionar]
   if(PORTB.F0)
      PORTB.F1=1;
   else
      PORTB.F1=0;
     

También es recomendable que agregues un pequeño retardo para evitar rebotes