Entrada Salida Puertos Digitales

En este videotutorial, se explica (utilizando el PIC 16f88) el uso básico de los puertos digitales. En el primer vídeo podemos ver en el datasheet su configuración interna, los puertos que posee, como debemos configurarlos si queremos que sea de entrada y salida a nivel de bit y la diferencia entre los registros PORT y TRIS.

 

Antes de empezar a ver el código en C del hola mundo (encender y apagar un led), les recomiendo que le echen un vistazo primero al  otro tutorial que se encuentra en esta misma sección, Microcontroladores->PIC-> Entorno CSS.  Si nunca han trabajado con el, así de este modo tendrán una mayor idea.

En este vídeo se trata de un código muy simple en C. Que pueden probar en algún simulador y si se animan más aun, que lo monten en su propia protoboard o placa como hemos echo nosotros.

 

 

En el siguiente enlace podreis descargaros el codigo del pograma.

Codigo fuente.

 

21 Comentarios

  1. Dalwin

    Gracias se ve que vamos a aprender mucho.

  2. SAEN

    sale gracias, me sirvió bastante el tutorial, muy bien explicado, donde se encuentra el PDF del programa

  3. Roberto (Publicaciones Autor)

    Hola SEAN,

    Justo al final de los vídeos, tienes un enlace, en el cual te puedes descargar todo el codigo fuente del programa. Espero que te sirva.

  4. josep

    Gracias, Merçi. Thanks

  5. juan antonio

    que buaeno

  6. javier

    hola, soy seguidor de tus videos, primero que todo te quiero dar las gracias por esos excelentes tutoriales. Cuando vas a colocar mas sobre pic’s?? si puedes, utiliza picbasic. gracias.

  7. Twistx77

    Buenas,

    me alegro que te gusten los vídeos. Tutoriales sobre PIC subiré cuando tenga tiempo, ya que son los que más tiempo me llevan con diferencia. En cuanto a picbasic, no lo voy a usar, odio basic a muerte. Habiendo otros lenguajes mucho mejores y actuales, por qué usar basic?

    Saludos!

  8. Ronald

    gracias por ayudarmo y compartir el conocimiento

  9. Twistx77

    No hay de que. Saludos!

  10. jorge

    gracias x el tutorial y x el tiempo q te tomas haciendo cada video!!…..muchas gracias en verdad a mi me sirve de mucho.

  11. jorge

    puedes hacer un programa utilizando 2 displays de salida o algo asi. tu lo explicas bien xvr. cuando tengas time claro 🙂

  12. jorge luis

    ola antes que nada kiero fecilitar los buenos videos tutoriales que dan a conocer estan bastante buenos, tengo poco tiempo de estar metido en esto de programacion de microcontroladores y aora tengo una duda, estuve buscando en la web algo q me aiudara pero no pude solucionar aun
    el programa que kiero hacer funcionar es el siguiente:
    al encender debo mostrar una frase en el lcd ” pulse tecla 0 o 1″, el cual con alguno de estos valores debo seleccionar el canal 0 o canal 1 para hacer la conversion AD y mostrar el valor del voltaje en el lcd del canal selecccionado y si no es ninguna de estas teclas que me muestre “tecla incorrecta” por 1segundo y luego que me muestre otra vez la frase “pulse tecla 0 o 1″.
    mi problema es q al parecer no iega la señal del teclado y por ello no ejecuta ninguna de las conversiones. noce donde esta el error x fa aver si pueden aiudar

    aqui muestro el codigo que realice aver si aiudan a encontrar el error xfavor

    #include
    #device ADC=10
    #fuses NOWDT,HS,NOLVP
    #use delay(clock=10M)

    #include
    #include

    void main()
    {
    char c;
    int16 q,m;
    int8 x;
    float p,n;

    lcd_init();
    port_b_pullups(TRUE);
    kbd_init();
    set_tris_a(0xFF);
    set_tris_b(0xFF);
    setup_adc(ADC_CLOCK_DIV_32);//32/10M=3.2us
    setup_adc_ports(AN0_AN1_AN3);
    printf(lcd_putc,”\fpulse tecla 0-1″);

    BUCLE:
    do
    {
    c=kbd_getc();
    }while(c==0||c==1);
    x=c-48; //lo convierto de ASCII a decimal
    if(x==0)
    {
    delay_ms(100);
    set_adc_channel(0); //selecciono canal 0
    delay_us(20);
    q=read_adc();
    p=q*(5.0/1023.0);
    printf(lcd_putc,”\fCANAL0=%f v”,p);
    }
    if(x==1)
    {
    delay_ms(100);
    set_adc_channel(1); //selecciono canal 1
    delay_us(20);
    m=read_adc();
    n=m*(5.0/1023.0);
    printf(lcd_putc,”\nCANAL1=%f v”,n);
    }
    else
    {
    printf(lcd_putc,”\ftecla incorrecta”);
    delay_ms(1000);
    printf(lcd_putc,”\fpulse tecla 0-1″);
    }
    goto BUCLE;
    }

  13. jorge luis

    perdon no pege completo el codigo, el codigo correcto debe ser con
    las directivas

    #include “16f877a.h” //1ra linea del codigo

    #include “lcd.c” //5ta linea del codigo

    #include “kbd.c” //6ta linea del codigo

    xfa necesito aiuda

  14. andre califa

    gracias por todos los tutos los he visto todos … desde q salias con tu tablero hasta los mas recientes…

    Gracias.

    alguien me podra colaborar quiero hacer un secuencial de leds con el 16f84a y los q he realixado solo los puedo hacer con un solo puerto.
    y si las “rlf” y “rrf” pasan de el puerto A al B o como se hace.

    lo hice con pic c y es facil pero no me sirbe por la cantidad de memoria q acepta el programa y me gustaria con mplab para sacarme esta duda tambien.
    en mplab lo hice con tablas pero por el porto B solamente.

  15. Twistx77

    Muchas gracias.

    Para poder ayudarte, postealo en el foro ya que así podemos seguir un hilo.

    Saludos!

  16. Javier

    Hola amigo, desde Colombia, muchas gracias, pensé que no iba a ser capaz de poner a funcionar ese pic porque es el 18F2550 y no es el mismo que usted usa, pero después de varios intentos lo logré, muchas gracias por su labor.

  17. Roberto

    No tendrás un tutoria de pic en mac? e intentado con picc y pickit 2 pero la verdad no comprendo del todo el funcionamiento de estos programas

    Saludos

  18. Twistx77

    No, no uso Mac, odio las políticas resitrictivas y controladoras de Apple…

  19. Erick

    Hola oye una pregunta como se llama el software que usas para compilar el que pones en los videos. o cual me recomiendas

  20. Twistx77

    Te recomendamos XC8 o XC16 o XC32 dependiendo del micro que uses.

    Saludos!

  21. Marcelo

    Hola hice este mismo circuito de led intermitente con un pic16f628a, pero en lugar de que el led encienda y se apague este alterna entre un brillo de menor intensidad y otro de mayor intensidad. A que podría deberse esto?

Dejar un comentario