Tutorial 5: Entradas y Salidas digitales, utilizando el compilador XC8 y MPLABX

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ก.ย. 2024
  • Página de Facebook: / cqtechnology
    WhatsApp +51991915652
    Donaciones a Paypal: www.paypal.me/...
    Código Github: github.com/CAR...
    Código en Drive: drive.google.c...

ความคิดเห็น • 22

  • @TheSpikmaLegendario
    @TheSpikmaLegendario 3 ปีที่แล้ว +1

    Buen tutorial, pero tengo un problema. He hecho este código y variaciones pero tengo el problema de que la salida definida cambia de estado de forma intermitente sin importar el estado de la entrada, no sabes a que se deba?

    • @CarlosQL
      @CarlosQL  2 ปีที่แล้ว

      Hola, probablemente sea por la versión del compilador, he actualizado los códigos con la versión más reciente de la fecha de MPLABX y de XC8. Saludos

  • @xaviersnz8949
    @xaviersnz8949 4 ปีที่แล้ว +1

    Saludos colega, los tutoriales son de mucha ayuda... solo una duda, usar PORTBbits.PB2_ = 0; es igual si usara PORTBbits.RB2 = 0; ??

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +1

      Lo correcto es PORTBbits.RB2 = 0 lo otro no lo va reconocer el compilador. Saludos

  • @franciscoreyes2285
    @franciscoreyes2285 6 ปีที่แล้ว +1

    Buen tutorial amigo, disculpa he intentado modificar el código para encender dos led independientes y con pulsador independiente, al estar encendido uno el otro no se encienda, y con un tercer pulsador apagar el led que se encuentre encendido.
    Gracias amigo...

    • @CarlosQL
      @CarlosQL  6 ปีที่แล้ว

      Buen día, necesitas ayuda con ese programa o pudiste solucionarlo ?

    • @franciscoreyes2285
      @franciscoreyes2285 6 ปีที่แล้ว

      Carlos QL Agradecería tu ayuda amigo ya que no he conseguido lograr que digamos:al estar encendido LED1, LED2 no de active al pulsar su botón correspondiente. Gracias por tu respuesta amigo.

    • @franciscoreyes2285
      @franciscoreyes2285 6 ปีที่แล้ว

      Este es el código que hasta el momento he realizado.
      // PIC16F887 Configuration Bit Settings
      // 'C' source line config statements
      // CONFIG1
      #pragma config FOSC = INTRC_NOCLKOUT// Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
      #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
      #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
      #pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
      #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
      #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
      #pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled)
      #pragma config IESO = ON // Internal External Switchover bit (Internal/External Switchover mode is enabled)
      #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
      #pragma config LVP = ON // Low Voltage Programming Enable bit (RB3/PGM pin has PGM function, low voltage programming enabled)
      // CONFIG2
      #pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
      #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off)
      #define _XTAL_FREQ 20000000
      // #pragma config statements should precede project file includes.
      // Use project enums instead of #define for ON and OFF.
      #include
      #include
      #define PUSHa PORTCbits.RC0
      #define PUSHb PORTCbits.RC1
      unsigned char BOTON = 0x00;
      void Luz_0(void);
      void Luz_1(void);
      void Luz_2(void);
      void selectorRutinas(void);
      void estado(void);
      void main(void)
      {
      TRISD = 0x00; //PORTD como salida
      TRISCbits.TRISC0 = 1; //RB5 como entrada
      TRISCbits.TRISC1 = 1; //RB5 como entrada
      PORTD = 0b00000000;
      while(1)
      {
      estado();
      if(PORTCbits.RC0 == 0) //evalua
      {
      BOTON = 0x01;
      //PORTD = 0b00000001;
      }
      if(PORTCbits.RC1 == 0)//evalua
      {
      BOTON = 0x02;
      //PORTD = 0b00000010;
      }
      if(PORTCbits.RC2 == 0)//evalua
      {
      BOTON = 0x00;
      //PORTD = 0b00000000;
      }
      }

      }
      void estado(void)
      {
      if(PORTCbits.RC0 == 0) //evalua
      {
      BOTON = 0x01;
      //PORTD = 0b00000001;
      selectorRutinas();
      }
      if(PORTCbits.RC1 == 0)//evalua
      {
      BOTON = 0x02;
      //PORTD = 0b00000010;
      selectorRutinas();
      }
      if(PORTCbits.RC2 == 0)//evalua
      {
      BOTON = 0x00;
      //PORTD = 0b00000000;
      selectorRutinas();
      }
      }
      void selectorRutinas(void)
      {
      switch (BOTON) //evalua cual rutina activar? el semaforo
      {
      case 0x00: Luz_0(); //rutina por default
      break;
      case 0x01: Luz_1(); //rutina en caso de presionar pulsador en RB1
      break;
      case 0x02: Luz_2(); //rutina en caso de presionar pulsador en RB2
      break;
      }
      }
      void Luz_0(void)
      {
      PORTD = 0b00000000;
      }
      void Luz_1(void)
      {
      PORTD = 0b00000001;
      //__delay_ms(500);
      }
      void Luz_2(void)
      {
      PORTD = 0b00000010;
      //__delay_ms(500);
      }

  • @Carlos-xi8ug
    @Carlos-xi8ug 6 ปีที่แล้ว

    Buen vídeo, podrías hacer un ejemplo de manejo de UART para ese pic. 16f877A

    • @CarlosQL
      @CarlosQL  6 ปีที่แล้ว

      Gracias por la sugerencia. El siguiente vídeo será de UART

  • @Xplouding
    @Xplouding 4 ปีที่แล้ว +1

    Hola, primero, excelentes los videos. Gracias por eso. Tengo una duda que me da vueltas, y es ¿para que sirven, dentro de cada proyecto, las diferentes carpetas? O sea "Header Files", "Important Files", "Linker Files", "Source Files", "Libraries" y "Loadables". Como se crea una Librería, y donde se guardan. Que es un archivo de cabecera, etc etc. O al menos donde o a que libro puedo remitirme para entenderlo bien.
    He revisado los textos propios de Microchip, pero no termino de entender bien su funcionamiento. Como y cuando se deben de usar. Etc etc.

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +1

      Hola, Heder Files, es para los archivos de encabezado (archivo con extensión h) y Source Files es para los archivos fuente (extensión c). La forma estándar de crear un librería es tener dos archivos, uno con extensión .h (para la declaración de variables y funciones) y otro archivo con extensión .c (para la inplementación de funciones). También puedes crear una librería y hacer que todo el código este en el archivo .h. Puedes crear una librería desde el mismo IDE MPLABX, inclusive desde el block de notas, simplemente creas el código y guardas el archivo con la extensión correspondiente

    • @Xplouding
      @Xplouding 4 ปีที่แล้ว

      Entendido! Gracias! En ASM es mas o menos lo mismo??

  • @divencia
    @divencia ปีที่แล้ว

    En proteus me funcionó pero no en el mundo real :(

  • @gabohernandez8881
    @gabohernandez8881 4 ปีที่แล้ว

    buenas tardes tengo un problema con mi software me aparece en falla en la programación la función TRIS , podría ayudarme en saber si me falta alguna librería o un pluggin
    gracias agradezco su ayuda

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Hola, Te sugiero que uses la última versión de MPLAB X, que es la 5.30, las versiones anteriores a esta, te marcaban errores de sintaxis por momentos, aunque si te dejaban compilar el programa. Indícame primero que versión de MPLAB X estas usando

  • @juliancaste3914
    @juliancaste3914 4 ปีที่แล้ว

    hola estoy haciendo un proyecto y se llegar hasta la parte de flashear el codigo , quemar en codigo en el pic pero veo que el pic necesita un clock un cristal hacer esas conexciones fisicas son dificiles? parautilizarlo en algo real? gracias

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +1

      Hola Julian, efectivamente si usas el Pic del video, tienes que usar una fuente de reloj externa, como un cristal de cuarzo. Hay otros PICs que tienen un oscilador interno. La configuración básica para este PIC, es la del circuito de proteus del video

  • @keydarkman
    @keydarkman 6 ปีที่แล้ว

    Saludos amigo seguirás haciendo más videos?.

    • @CarlosQL
      @CarlosQL  6 ปีที่แล้ว

      Sí, hemos retomado el proyecto. Saludos

  • @rodrigoeloysanabriareyes4872
    @rodrigoeloysanabriareyes4872 2 ปีที่แล้ว +1

    Lo unico que no me gustan de tus videos es que no eres mi maestro de micros, ojala pudieras dar un minicurso

    • @CarlosQL
      @CarlosQL  2 ปีที่แล้ว

      Gracias por los comentarios Rodrigo, estoy preparando un curso de PIC, pero con lo nuevos, cualquier novedad lo anuncio por el canal, saludos