Autor Tema: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC  (Leído 1954 veces)

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

Desconectado beto0350

  • PIC12
  • **
  • Mensajes: 58
18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
« 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

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
« Respuesta #1 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;
     };
     
}

Desconectado beto0350

  • PIC12
  • **
  • Mensajes: 58
Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
« Respuesta #2 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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
« Respuesta #3 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
El papel lo aguanta todo

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: 18f4550 no reconoce (0) o (1) en un pin - siempre es cero - MIKROC
« Respuesta #4 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
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA