Autor Tema: como leer un puerto usando mikro C  (Leído 5929 veces)

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

Desconectado cororo

  • PIC10
  • *
  • Mensajes: 5
como leer un puerto usando mikro C
« en: 06 de Julio de 2009, 20:51:06 »
Hola
    Senores, soy nuevo en esto de los pics, compre el 18f2550, ahora lo que estoy aciendo es un programa rotacional que cambiara de jiro al leer un bit del puerto b, PORTB.F0, siendo 0 rota a la derecha, siendo 1(5v) rota a la izquierda, total que cuando lo debuggeo en el mikro C si funciona, pero en la practica el puerto no recoge el 1 en el PORTB.F0

    La manera de como genero el 0 o el 1, es con una resistencia de 4.7k en serie a un pushboton normalmente  abierto que va a tierra, osea que cuando se pone push botton cerrado el voltaje en PORTB.F0 es 0 asi rota de una forma y de lo contrario rota de la otra, que puede estar mal ???



void main()
{
     TRISA=0X00;    //como salidas
     TRISB=0XFF;    //como entradas

    while(1)             //siclo infinito
     {
       int=sapo;
       sapo=PORTB.F0;
              if(sapo==0xFF)         //evaluamos si el bit 0 de el puerto b como entrada esta en 0, si es asi se ejecuta el while
              {  
                    //rota a la izquierda
                    PORTA=1;                  //0000 0001
                    Delay_ms(20);
                    PORTA=2;                  //0000 0010
                    Delay_ms(20);
                    PORTA=4;                  //0000 0100
                    Delay_ms(20);
                    PORTA=8;                  //0000 1000
                    Delay_ms(20);
                    PORTA=16;                 //0001 0000
                    Delay_ms(20);
                    PORTA=32;                 //0010 0000
                    Delay_ms(20);


              }
              if(sapo==0x00)  //si la patita 1 del puerto b es 1(5v) ahar rota ala derecha
              {          
                    //rota a la derecha
                    PORTA=32;                 //0010 0000
                    Delay_ms(20);
                    PORTA=16;                  //0001 0000
                    Delay_ms(20);
                    PORTA=8;                  //0000 1000
                    Delay_ms(20);
                    PORTA=4;                 //0000 0100
                    Delay_ms(20);
                    PORTA=2;                 //0000 0010
                    Delay_ms(20);
                    PORTA=1;                 //0000 0001
                    Delay_ms(20);

               }
      }
}

    
« Última modificación: 07 de Julio de 2009, 11:53:53 por un Moderador »

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: como leer un purto usando mikro C
« Respuesta #1 en: 07 de Julio de 2009, 10:30:38 »
hola cororo bien venido al foro.... el programa aparentemente está bien.... te recomiendo:
que revises el hardware, su ensamblaste (protoboard, si es el caso)...
que verifiques la señal de MCLR que ingresa al micro alimentcion y demas.

Saludos  8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado cororo

  • PIC10
  • *
  • Mensajes: 5
Re: como leer un puerto usando mikro C
« Respuesta #2 en: 08 de Julio de 2009, 20:57:26 »
hola
    Mira ya investigue lo que pasa esque tengo que eliminar las interrupcines externas, uso este codigo pero no funciona

RCON.IPEN = 0;
     INTCON.GIE = 0;
     INTCON.INT0IE = 0;
     INTCON.RBIE = 0;
     INTCON2.RBPU = 1;
     INTCON3.INT2IE = 0;
     INTCON3.INT1IE = 0;

Gracias  :) 8)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: como leer un puerto usando mikro C
« Respuesta #3 en: 09 de Julio de 2009, 01:37:38 »
¿Esto qué es?
PORTB.F0;

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: como leer un puerto usando mikro C
« Respuesta #4 en: 13 de Julio de 2009, 14:46:33 »
Es la forma en que mikroC define a los puertos:

En el caso de PORTB.FO , está definiendo el pin RB0

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: como leer un puerto usando mikro C
« Respuesta #5 en: 13 de Julio de 2009, 16:11:25 »
Claro, pero es un sólo bit lo que se lee ahí, sin embargo luego lo compara con un byte: if(sapo==0xFF)       

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: como leer un puerto usando mikro C
« Respuesta #6 en: 13 de Julio de 2009, 16:53:53 »
Ahí está el error entonces el programa le quedaría así:
Código: C
  1. void main()
  2. {
  3.      TRISA=0X00;    //como salidas
  4.      TRISB=0XFF;    //como entradas
  5.  
  6.     while(1)             //siclo infinito
  7.      {
  8.        if(PORTB.F0 = 1)         //evaluamos si el bit 0 de el puerto b como entrada esta en 0, si es asi se ejecuta el while
  9.               {  
  10.                     //rota a la izquierda
  11.                     PORTA=1;                  //0000 0001
  12.                     Delay_ms(20);
  13.                     PORTA=2;                  //0000 0010
  14.                     Delay_ms(20);
  15.                     PORTA=4;                  //0000 0100
  16.                     Delay_ms(20);
  17.                     PORTA=8;                  //0000 1000
  18.                     Delay_ms(20);
  19.                     PORTA=16;                 //0001 0000
  20.                     Delay_ms(20);
  21.                     PORTA=32;                 //0010 0000
  22.                     Delay_ms(20);
  23.  
  24.  
  25.               }
  26.               if(PORTB.F0 = 0)  //si la patita 1 del puerto b es 1(5v) ahar rota ala derecha
  27.               {          
  28.                     //rota a la derecha
  29.                     PORTA=32;                 //0010 0000
  30.                     Delay_ms(20);
  31.                     PORTA=16;                  //0001 0000
  32.                     Delay_ms(20);
  33.                     PORTA=8;                  //0000 1000
  34.                     Delay_ms(20);
  35.                     PORTA=4;                 //0000 0100
  36.                     Delay_ms(20);
  37.                     PORTA=2;                 //0000 0010
  38.                     Delay_ms(20);
  39.                     PORTA=1;                 //0000 0001
  40.                     Delay_ms(20);
  41.  
  42.                }
  43.       }
  44. }

Probá ahí cororo  a ver si funciona


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: como leer un puerto usando mikro C
« Respuesta #7 en: 13 de Julio de 2009, 17:18:36 »
Mejor ponle dos signos =

 if(PORTB.F0 == 1)


 

anything