SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
IUT Cumaná




  MICROCONTROLADORES II
      MÓDULO USART
(Comunicación Serial Asíncrona)

        PROF. LUIS ZURITA
IUT Cumaná



                             INTRODUCCIÓN

       • En los sistemas con microcontroladores puede existir
         la necesidad de conectarse con el mundo exterior, y
         esto se logra mediante las comunicaciones seriales y
         paralelas.
       • En este tema se tratará la comunicación serial
         asíncrona mediante el módulo USART. Dicha
         comunicación permite establecer un enlace de
         comunicación tipo Full Duplex.

                             TX         RX
                    RC6/TX                   Dispositivo
                             RX         TX
                    RC7/RX                    Externo
                                  GND
                    µC
Prof. Luis Zurita                                          Microcontroladores II
IUT Cumaná



                           PROTOCOLO RS-232

       • Este protocolo es el utilizado por los
         microcontroladores y su módulo USART.
       • Cada dato se envía independientemente de los
         demás.
       • Consta de 8 ó 9 bits de datos
       • Consta de 1 bit de Inicio (START)
       • Consta de 1 bit de Parada (STOP)




        BIT INICIO                            BIT PARADA
                     LSB      DATO     MSB
Prof. Luis Zurita                                          Microcontroladores II
IUT Cumaná



                        MÓDULO USART

       1. Circuito de Muestreo (RC7/RX)
       2. Generador de Baudios
          La frecuencia en baudios (bits por segundos) es la
          velocidad a la que se realiza la transferencia de
          datos. Valores normalizados: 330, 600, 1200, 2400,
          4800, 9600, 19200, 38400, otros.
       • El USART tiene un generador de Frecuencia en
          baudios, BRG. Su valor es controlado por el
          Registro SPBRG.
       • La frecuencia en baudios del generador depende
          del bit BRGH del registro TXSTA (2).


Prof. Luis Zurita                                    Microcontroladores II
IUT Cumaná



                            MÓDULO USART

       • Si BRGH=1, se trabaja en alta velocidad y K= 16.
       • Si BRGH=0, se trabaja en baja velocidad y K= 64.
       • K se necesita para determinar la frecuencia de
         funcionamiento.
                                                 Fosc
                    Frecuencia _(baudios ) 
                                             ( K  ( X  1))

         Ejemplo. Halle el valor a cargar en SPBRG, si se desea
         trabajar con un PIC16F873, con un XT, a una baja
         velocidad y frecuencia de 9600 baudios.

Prof. Luis Zurita                                              Microcontroladores II
IUT Cumaná



                    TRANSMISOR ASÍNCRONO

       • El dato a transmitirse se coloca en TXREG. De
         inmediato pasa al registro de desplazamiento TSR,
         que empieza a sacar los bits secuencialmente, según
         la frecuencia establecida. Se incluye antes de los
         datos el bit de Inicio. Y después de los bits de datos,
         se agrega el bit de parada.
       • Como podemos ver, el corazón del transmisor lo
         constituye el TSR, cuyo contenido es cargado con el
         Dato a transmitir desde el TXREG.
       • Lo va sacando bit a bit desde el LSB hasta el MSB.



Prof. Luis Zurita                                        Microcontroladores II
IUT Cumaná



                    TRANSMISOR ASÍNCRONO

       • Existe un señalizador TXIF (PIR1,4) que se pone a 1,
         indicando que el TSR se ha vaciado. Si se ha
         habilitado la interrupción por esta causa con el bit
         TXIE (PIE1,4), se entrará en una RSI.
       • Cuando se escribe un nuevo dato a ser transmitido
         en el TXREG, el señalizador TXIF se pone a 0.
       • También existe otro bit, el TRMT (TXSTA,1) que se
         pone a 1 cuando el TSR está vacío.




Prof. Luis Zurita                                     Microcontroladores II
IUT Cumaná



                    TRANSMISOR ASÍNCRONO




Prof. Luis Zurita                          Microcontroladores II
IUT Cumaná

                           TX9D
                                                            TXREG
               TX9=1       1 bit
                                                              8 bits


                            REGISTRO DE DESPLAZAMIENTO DE SALIDA                      RC6/TX


           TX9D: 9 bits de datos transmitidos. Puede ser el bit de paridad


           1        0                                                    1
                           D0      D1   D2   D3   D4   D5   D6   D7

               Bit start                                               Bit stop


           1        0                                                             1
                                                                        TX9D
                           D0      D1   D2   D3   D4   D5   D6   D7

               Bit start                                                       Bit stop

Prof. Luis Zurita
                                         Tramas a enviar                                       Microcontroladores II
PASOS PARA LOGRAR                                                 IUT Cumaná




             TRANSMISIÓN ASÍNCRONA (Aplica en ASM)
       1.           Configurar RC6/TX como salida y RC7/RX como entrada.
       2.           Inicializar el registro SPBRG con el valor apropiado según los
                    cálculos realizados. Si se desea el margen alto se pondrá a uno el
                    bit BRGH.
       3.           Habilitar USART en modo asíncrono con SYN= 0 y SPEN= 1.
       4.           Habilitar la interrupción (opcional) con TXIE=1. (PIE1,4).
       5.           Poner a cero o a uno el bit TX9 (8 ó 9 bits).
       6.           Habilitar la transmisión con TXEN= 1, el cual pondrá a uno el bit
                    TXIF.
       7.           Si se han seleccionado 9 bits se deber poner el noveno en el bit
                    TX9D.
       8.           Cargar el dato en el registro TXREG (comenzar la transmisión).




Prof. Luis Zurita                                                            Microcontroladores II
TXSTA
                                                                     IUT Cumaná




  bit 7: CSRC: Bit de selección de reloj
          Modo Asíncrono:        Sin importancia
  Modo Síncrono
          1 = Modo master (reloj generado internamente para BRG
          (Generador de Baudios))
          0 = Modo esclavo (reloj externo)
  bit 6: TX9: Habilita transmisión de 9-8 bits
          1 = Transmisión de 9 bits
          0 = Transmisión de 8 bits
  bit 5: TXEN: Bit de habilitación del transmisor
          1 = Habilita transmisión
          0 = Deshabilita transmisión (Nota: SREN/CREN anula TXEN
  en      modo SYNC.)
  bit 4: SYNC: Bit de selección del modo USART
          1 = Modo Síncrono
          0 = Modo Asíncrono
Prof. Luis Zurita                                         Microcontroladores II
TXSTA
                                                                           IUT Cumaná




       bit 3: Sin implementar: En lectura es'0'
       bit 2: BRGH: Bit de selección del rango de baudios alto
          Modo Asíncrono
          1 = Alta velocidad
          0 = Baja velocidad
          Modo Síncrono: No se usa este modo
       bit 1: TRMT: Bit de estado del registro de desplazamiento del
          transmisor (TSR)
          1 = TSR vacío
          0 = TSR lleno
       bit 0: TX9D: Noveno bit de datos de transmisión. Se puede
          emplear como bit de paridad.


Prof. Luis Zurita                                               Microcontroladores II
IUT Cumaná



                        RECEPTOR ASÍNCRONO

       • Los datos se reciben en serie, bit a bit, por el pin RC7/RX, y se
         van introduciendo secuencialmente en el registro de
         desplazamiento RSR, que opera a una frecuencia 16 veces
         más rápida que la de trabajo.
       • Después de recibir el bit de Stop los datos acumulados en este
         registro se cargan en el de datos RCREG (si está vacío).
         Cuando la transferencia se ha completado, el bit RCIF (PIR1,5)
         se pone a uno. La interrupción puede habilitarse o
         deshabilitarse colocando a uno o borrando, respectivamente,
         el bit RCIE (PIE1,5). El bit RCIF se borra cuando el registro
         RCREG se ha leído (se "vacía" el registro).
       • Cuando se tiene el formato de 9 bits de datos, hay que
         programar el RX9=1 (RCSTA,6) y el 9no bit de dato se colocará
         en RX9D (RCSTA,0)


Prof. Luis Zurita                                                 Microcontroladores II
IUT Cumaná



                    RECEPTOR ASÍNCRONO




Prof. Luis Zurita                        Microcontroladores II
IUT Cumaná




                    RC7/RX           REGISTRO DE DESPLAZAMIENTO DE SALIDA



                                         1 bit                  8 bits


                                                            Buffer




                                                                            FIFO
                             RX9=1    RX9D                  RCREG


                                     Recepción de datos




Prof. Luis Zurita                                                             Microcontroladores II
PASOS PARA LOGRAR                                                 IUT Cumaná




                    RECEPCIÓN ASÍNCRONA (Aplica en ASM)
       1. Configurar RC6/TX como salida y RC7/RX como entrada.
       2. Inicializar el registro SPBRG con el valor apropiado según los cálculos
          realizados. Si se desea el margen alto se pondrá a uno el bit BRGH.
       3. Habilitar USART en modo asíncrono con SYN= 0 y SPEN= 1.
       4.  Habilitar la interrupción (si se desea ) poniendo a uno el bit RCIE (PIE1,5).
       5.  Poner a uno el bit RX9 (RCSTA,6) para habilitar 9 bits de recepción.
       6.  Habilitar la recepción poniendo a uno el bit CREN.
       7.  El flag RCIF subirá a uno cuando se complete la recepción y se ocasionará una
           interrupción si está habilitado el bit RCIE.
       8. Leer el registro RCSTA, cargar el noveno bit (si está habilitado) y comprobar si ha
           ocurrido un error durante la recepción.
       9. Leer el octavo bit recibido y dar lectura al registro RCREG para conocer si el
           dispositivo se ha direccionado.
       10. Si ha ocurrido un error borrarlo poniendo a cero el bit CREN.
       11. Si el dispositivo ha sido direccionado, borrar el bit ADDEN para permitir que los
           datos puedan leerse del buffer receptor



Prof. Luis Zurita                                                                  Microcontroladores II
RCSTA
                                                                                IUT Cumaná




       bit 7: SPEN: Bit de habilitación del puerto serie
           1 = Habilita puerto serie (configura patillas RC7/RX/DT y RC6/TX/CK
           para el puerto serie)
           0 = Deshabilita puerto serie
       bit 6: RX9: Habilita recepción de 9-8 bits
           1 = Selecciona 9 bits de recepción
           0 = Selecciona 8 bits de recepción
       bit 5: SREN: Bit de habilitación de recepción única
           Modo asíncrono: Este modo no se usa
           Modo Síncrono master:
           1 = Habilita una recepción única
           0 = Deshabilita una recepción única
           Este bit se borra después de completar la recepción
           Modo Síncrono esclavo: En este modo no se usa.


Prof. Luis Zurita                                                    Microcontroladores II
RCSTA
                                                                                   IUT Cumaná




       bit 4: CREN: Bit de habilitación de recepción continua
           Modo Asíncrono
           1 = Habilita recepción continua
           0 = Deshabilita recepción continua
           Modo Síncrono
           1 = Habilita recepción continua hasta que el bit CREN sea borrado.
           0 = Deshabilita la recepción continua
       bit 3: Sin implementar: En lectura es '0'
       bit 2: FERR: Bit de error de empaquetamiento
           1 = Error de empaquetamiento (Puede actualizarse al leer el registro
           RCREG y recibir el siguiente byte)
           0 = No hay error
       bit 1: OERR: Bit de error de desbordamiento
           1 = Error de desbordamiento (puede ser borrado al borrar CREN)
           0 = No hay desbordamiento
       bit 0:RXGD: Noveno bit de datos de recepción. Se puede emplear como bit de
           paridad
Prof. Luis Zurita                                                       Microcontroladores II
Módulo USART en C                                 IUT Cumaná




       • Las siguientes directivas permiten una configuración genérica
          del módulo USART:
       #USE RS232 (opciones)
        Esta directiva permite configurar varios parámetros del módulo
          USART, tales como la velocidad de transmisión, pines
          utilizados, entre otros. Se puede modificar en cualquier parte
          del programa, pero siempre después de haber definido la
          directiva #USE DELAY.
       Esta directiva habilita el uso de funciones tales como GETCH,
          PUTCHAR y PRINTF. Permite su uso en dispositivos que no
          poseen módulo USART mediante software USART.
       Cuando se utilizan dispositivos con USART, si no se puede
          alcanzar una tasa de baudios dentro del 3 % del valor deseado
          utilizando la frecuencia de reloj actual, se generará un error.


Prof. Luis Zurita                                                Microcontroladores II
Módulo USART en C                               IUT Cumaná




    BAUD=X          Velocidad en Baudios
    XMIT=pin        Pin de transmisión
    RCV= pin        Pin de recepción
    FORCE_SW        Usa un software UART en lugar del hardware,
                    aún cuando se especifican los pines del
                    hardware.
    RESTART_WDT     Hace que la función GETC ( ) ponga a cero el
                    WDT mientras espera un carácter.
    BRGH1OK         Permite velocidades de transmisión bajas en
                    chips que tienen problemas de transmisión.




Prof. Luis Zurita                                        Microcontroladores II
Módulo USART en C                                  IUT Cumaná




    ENABLE= pin     El pin especificado estará a nivel alto durante la
                    transmisión. Utilizado en transmisión 485.
    DEBUGGER        Permite depuración a través del ICD. El pin por
                    defecto es el B3;
    INVERT          Invierte la polaridad de los pines serie
                    (normalmente no es necesario con el
                    convertidor de nivel, como el MAX232). No
                    puede usarse con el USART interno.
    PARITY= X       Donde X es N,E u O
    BITS= X         Donde X es 5-9 (no puede usarse 5-7 con el
                    USART interno).
    FLOAT_HIGH      Se utiliza para las salidas de colector abierto.

Prof. Luis Zurita                                           Microcontroladores II
Módulo USART en C                                              IUT Cumaná



    ERRORS          Indica al compilador que guarde los errores recibidos en la
                    variable RS232_ERRORS para restablecerlos cuando se
                    producen.
    SAMPLE_EARLY    No se puede utilizar con el USART interno. Provoca que el
                    muestreo del dato a través de la función GETC ( ) se realice al
                    principio de un bit de tiempo.
    RETURN= pin     Para FLOAT_HIGH y MULTI_MASTER, este pin se usa para leer
                    la señal de retorno. Por defecto, para FLOAT_HIGH es XMIT y
                    para MULTIMASTER es RCV.
    MULTI_MASTER    Usa el pin de RETURN para determinar si otro master en el bus
                    está transmitiendo al mismo tiempo. Si se detecta una colisión,
                    el bit 6 se pone a 1 en RS232_ERRORS y todos los posibles
                    PUTC ( ) son ignorados hasta que el bit 6 esté a 0. La señal es
                    comprobada al final y al principio de cada bit de tiempo. No se
                    puede utilizar con USART interno.
    LONG_DATA       Permite manejar INT16 a las funciones GETC ( ) y PUTC ( ). En
                    formatos de datos de 9 bits.
    DISABLE_INTS    Provoca la deshabilitación de interrupciones cuando se ejecuta
                    GETC ( ) y PUTC ( ) evitando distorsiones en los datos.
Prof. Luis Zurita                                                       Microcontroladores II
Módulo USART en C                                 IUT Cumaná




    STOP= x         Número de bits de stop (por defecto 1)
    TIMEOUT= x      Para establecer el tiempo que GETC ( ) espera
                    un carácter (en ms). Si no se recibe carácter en
                    este tiempo, el RS232_ERRORS se pone a 0.
    SYNC_SLAVE      Provoca una línea RS232 en modo esclavo
                    síncrono, haciendo el pin de recepción como
                    entrada de reloj y la de transmisión como
                    entrada/salida de datos.
    SYNC_MASTER     Provoca una línea RS232 en modo maestro
                    síncrono, haciendo el pin de recepción como
                    salida de reloj y la de transmisión como
                    entrada/salida de datos.
    UART1           Configura el XMIT y RCV para el USART1
    UART2           Configura el XMIT y RCV para el USART2
Prof. Luis Zurita                                          Microcontroladores II
Módulo USART en C                                 IUT Cumaná


  Ejemplos:
  #use delay (clock=20000000);
  #use rs232 (BAUD=9600 , XMIT=PIN_C6 , RCV=PIN_C7 , BITS=8)
  #use rs232 (BAUD=9600 , XMIT=PIN_A2 , RCV=PIN_A3)

  Setup_uart(baud)
  baud es una constante que define la velocidad. Un 1 enciende el
     USART y un 0 lo apaga. Con cualquier valor de velocidad, el USART
     se enciende.
  set_uart_speed (baud)
  Idéntica a la función anterior. Ejemplo:
  // Se establece la velocidad mediante la combinación de los pines B0
     y B1:
  switch (input_b ( ) & 3){
     case 0: set_uart_speed(2400); break;
     case 1: set_uart_speed(4800); break;
     case 2: set_uart_speed(9600); break;
     case 3: set_uart_speed(19200); break;
Prof. Luis Zurita                                            Microcontroladores II
Módulo USART en C                              IUT Cumaná




       Transmisión de datos:
       putc (cdata)
       putchar (cdata)
       cdata es un carácter de 8 bits. Esta función envía un
          carácter mediante el pin XMIT. La directiva #USE RS232
          debe situarse siempre antes de utilizar esta función.
       puts (string)
       string: cadena de caracteres constante o matriz de
          caracteres terminada con un 0. La funcióon puts ( )
          manda los caracteres de la cadena, uno a uno, a través
          del bus RS232 utilizando la función PUTC ( ); detrás de la
          cadena envía un RETURN (13) y un retorno de carro (10)

Prof. Luis Zurita                                           Microcontroladores II
Módulo USART en C                             IUT Cumaná




  printf (fname, cstring, values…)
  cstring: es una cadena de caracteres (constante) o matriz
    de caracteres terminada con un cero.
  fname: las funciones a utilizar para escribir la cadena
    indicada; por defecto se utiliza la función PUTC ( ), que
    permite escribir en el bus RS232.
  values: valores a incluir en la cadena separados por comas;
    se debe indicar %nt. El formato es %nt, donde n es
    opcional y puede ser:
  1-9          para especificar cuantos caracteres deben ser
               especificados;
  01-09        para indicar la cantidad de ceros a la izquierda.
  1.1-9.9      para coma flotante.
Prof. Luis Zurita                                      Microcontroladores II
Módulo USART en C                              IUT Cumaná




       t puede indicar:
          c Carácter
          s Cadena o carácter
          u Entero sin signo
          d Entero con signo
          Lu Entero sin signo
          Ld Entero largo con signo
          x Entero hexadecimal (minúscula)
          X Entero hexadecimal (mayúscula)
          Lx Entero largo hexadecimal (minúscula)
          LX Entero largo hexadecimal (mayúscula)
          f   Flotante con truncado
          g Flotante con redondeo
          e Flotante en formato exponencial
          w Entero sin signo con decimales insertados. La 1ra cifra
              indica el total, la 2da el número de decimales.
Prof. Luis Zurita                                           Microcontroladores II
Módulo USART en C                             IUT Cumaná




       Recepción de datos:
       value= getc ( );
       value= getch ( );
       value= getchar ( );
       value (valor) es un carácter de 8 bits. Espera recibir un
          carácter por la línea RS232 y devuelve su valor. En los
          dispositivos con USART interno, se pueden almacenar
          hasta tres caracteres; para evitar esperas se puede
          utilizar la función KBHIT ( ).
       valor= kbhit ( );
       valor es 0 (FALSE) si GETC ( ) debe esperar a que llegue un
          carácter; 1 (TRUE) si ya hay un carácter listo para ser
          leído por la función GETC ( ).

Prof. Luis Zurita                                          Microcontroladores II
Ejemplo 1. Enviar los datos del 0 al 10, en modo asíncrono, entre dos
  PICS. Visualizar con un LCD, los datos enviados y los datos recibidos;
  la recepción del dato deberá ser por interrupción del USART.
       // PIC MAESTRO
       #include <16F877.h>
       #FUSES XT,NOWDT
       #use delay(clock=4000000)
       #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
       #include <LCD.C>
       void main() {
         int valor;
         lcd_init();
       while(1){
         for (valor=0;valor<=10;valor++) {
           PUTC(valor);            // Envia valor
            printf(lcd_putc,"fENVIANDOn");
            printf(lcd_putc,"%1D",valor);
            delay_ms(2000);
            }
          }
       }
Prof. Luis Zurita                                             Microcontroladores II
// PIC ESCLAVO
       #include <16F877.h>                                                 IUT Cumaná


       #FUSES XT,NOWDT
       #use delay(clock=4000000)
       #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
       #include <LCD.C>
       #BYTE TRISA=0X85
       #BYTE PORTA=0X05
       int valor;
       #int_RDA
       RDA_isr() {
        valor=GETC();} //Recibe valor
       void main() {
         bit_clear(TRISA,0);
         lcd_init();
          enable_interrupts(INT_RDA);
          enable_interrupts(GLOBAL);
       for (;;) {
            lcd_gotoxy(1,1);
            printf(lcd_putc,"recibiendo=%1D",valor);
          }
       }
Prof. Luis Zurita                                               Microcontroladores II
IUT Cumaná




       Con el “Virtual Terminal”, presionando el
       botón derecho del mouse y seleccionando
       Hex display mode, podemos visualizar los
       datos que se están recibiendo.




Prof. Luis Zurita                                  Microcontroladores II
La norma RS232                             IUT Cumaná




   • Es la más básica de las comunicaciones serie. Comunica un
     equipo terminal de datos (DTE) con el equipo de
     comunicación de datos (DCE).
   • Las características eléctricas de la señal en esta norma
     establecen que la longitud máxima entre dos equipos no
     debe ser superior a 15 metros, sin embargo, el autor ha
     realizado pruebas de campo que permiten alcanzar los 30
     metros. La velocidad máxima de transmisión es de 20 kbps.
     Los niveles lógicos no son compatibles con los niveles TTL,
     ya que se situan dentro de los siguientes rangos: 1 lógico
     entre -3 v a -15 v y 0 lógico entre +3 v a +15 v.
   • Se utilizan conectores DB9 y DB25.

Prof. Luis Zurita                                      Microcontroladores II
La norma RS232                             IUT Cumaná




      • Para una comunicación full duplex desde el USART
        del PIC, se debe conectar un mínimo número de
        señales, a saber: TXD, RXD y tierra (GND). Los PICS
        utilizan señal TTL en el módulo USART, por lo que
        debe utilizarse un convertidor de niveles a RS232,
        como el circuito integrado MAX232

                            RX               TX

                            TX               RX
                                  MAX232
                           GND               GND


                    NIVELES TTL            NIVELES RS232
Prof. Luis Zurita                                          Microcontroladores II
Circuito integrado MAX232              IUT Cumaná




Prof. Luis Zurita                               Microcontroladores II
• En la actualidad, las computadoras desde el año 1996 han ido
  erradicando el puerto serie con el conector DB9 y DB25, por el
                                                                      IUT Cumaná




  puerto USB (Universal Serial Port).
• Una solución ha sido la implementación de cables de
  conversión USB-232.
• Sin embargo, los microcontroladores de la familia PIC18,
  integran un módulo USB para comunicaciones como protocolo
  de comunicación.




                    Convertidor   Módulo        Módulo
                     USB-232      USART          USB

           Familia PIC16F87X       PIC            PIC      Familia PIC18
Prof. Luis Zurita                                          Microcontroladores II
Ejemplo 2. Realizar un sistema Maestro-Esclavo multi-           IUT Cumaná

  selector.
       • La selección de las órdenes se realiza mediante un
         teclado y se visualizan en una pantalla LCD en el
         Maestro.
       • Si se presiona 1, el Maestro envía el dato: 17H, el
         esclavo activa el led Rojo y muestra en una pantalla
         LCD: ORDEN1.
       • Si se presiona 4, el Maestro envía el dato: 2DH, el
         esclavo activa el led amarillo y muestra en una
         pantalla LCD: ORDEN2.
       • Si se presiona 7 el Maestro envía el dato: 64H, el
         esclavo activa el led verde y muestra en una pantalla
         LCD: ORDEN3.
       • Si se presiona cualquier otra tecla, el Maestro envía
         el dato: C2H, el esclavo desactiva todos los leds y
         muestra en una pantalla LCD: TODOS OFF.
Prof. Luis Zurita                                      Microcontroladores II
Ejemplo 2. Sistema Maestro-Esclavo multi- selector.                                                    IUT Cumaná

  Programa del Maestro:
       #include <16f877.h>                               if (k!=0) {
       #fuses XT,NOWDT,NOPROTECT,NOLVP                         if (x==1)
       #use delay (CLOCK = 4000000)                         {valor=0x17;
       #use rs232(baud=9600, xmit=pin_c6,                            PUTC(valor);
           rcv=pin_c7)                                               printf(lcd_putc,"fORDEN 1");}
       #define use_portb_kbd TRUE                                    else if (x==4)
       #define use_portd_lcd TRUE                                    {valor=0x2D;
       #include <lcd.c>                                              PUTC(valor);
       #include <kbd.c>                                              printf(lcd_putc,"fORDEN 2");}
                                                                     else if (x==7)
       void main() {                                                 {valor=0x64;
       char k;                                                       PUTC(valor);
       int x;                                                        printf(lcd_putc,"fORDEN 3");}
       int valor;                                                    else
            lcd_init();                                              {valor=0xC2;
            kbd_init();                                              PUTC(valor);
            port_b_pullups(TRUE);                                    printf(lcd_putc,"fTODOS OFF");
            printf(lcd_putc,"fPRESIONE FUNCION");                   delay_ms(1000);}
            OUTPUT_C(0x00);                                   }
       while (TRUE) {                                     }
            k=kbd_getc();                            }
                    x=k-48;
Prof. Luis Zurita                                                                             Microcontroladores II
Ejemplo 2. Sistema Maestro-Esclavo multi- selector.                                            IUT Cumaná

 Programa del Esclavo:
 #include <16f877.h>                                      delay_ms(50);}
 #fuses XT,NOWDT                                          else if (valor==0x2D)
 #use delay(CLOCK=4000000)                                {printf(lcd_putc,"fORDEN 2");
 #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7,           output_low (PIN_C0);
      bits=8)                                             output_high (PIN_C1);
 #define use_portd_lcd TRUE                               output_low (PIN_C2);
 #include <lcd.c>                                         delay_ms(50);}
 int valor;                                               else if (valor==0X64)
                                                          {printf(lcd_putc,"fORDEN 3");
 #int_RDA                                                 output_low (PIN_C0);
 RDA_isr(void){                                           output_low (PIN_C1);
 valor=GETC();}                                           output_high (PIN_C2);
                                                          delay_ms(50);}
  void main() {                                           else if      (valor==0XC2)
        set_tris_c(0x80);                                 {printf(lcd_putc,"fTODOS OFF");
        lcd_init();                                       output_low (PIN_C0);
        enable_interrupts(INT_RDA);                       output_low (PIN_C1);
        enable_interrupts(GLOBAL);                        output_low (PIN_C2);
  while (TRUE) {                                          delay_ms(50);}
            if (valor==0x17)                              else{
         {printf(lcd_putc,"fORDEN 1");                   }
                  output_high (PIN_C0);               }
                  output_low (PIN_C1);            }
Prof. Luis Zurita output_low (PIN_C2);                                               Microcontroladores II
Ejemplo 2. Sistema Maestro-Esclavo multi- selector.      IUT Cumaná

  Simulación del Programa:




Prof. Luis Zurita                               Microcontroladores II
Ejemplo 2. Sistema Maestro-Esclavo multi- selector.      IUT Cumaná

  Simulación del Programa:




Prof. Luis Zurita                               Microcontroladores II
Ejemplo 2. Sistema Maestro-Esclavo multi- selector.      IUT Cumaná

  Simulación del Programa:




Prof. Luis Zurita                               Microcontroladores II
Ejemplo 2. Sistema Maestro-Esclavo multi- selector.      IUT Cumaná

  Simulación del Programa:




Prof. Luis Zurita                               Microcontroladores II
Ejemplo 3. Realizar una conversión A/D de una señal proveniente de
un potenciómetro en un PIC16F877, y enviarlo al puerto serie de una
computadora. Visualizar los datos en LABVIEW (Opcional), además de
poder controlar el puerto B de un PIC16F873 desde la computadora.
  PROGRAMA DEL PIC MAESTRO:                for (;;) {
  #include <16F877A.h>                     set_adc_channel(0); // Conversión
  #device ADC=10                           //de la señal del potenciómetro
  #FUSES XT,NOWDT,NOPROTECT,NOLVP          delay_ms(10);       // Espera el TADQ
  #use standard_io(c)                        valor = read_adc(); // Lee el valor
  #use delay(clock=4000000)                de //la conversión
  #use rs232(baud=9600, xmit=pin_c6,          p=valor*0.098; // Factor escalar
     rcv=pin_c7, bits=8, parity=N)         //para pasar de 0-1023 a 0-100
  #BYTE TRISA=0X85                            putc(p);
  #BYTE PORTA=0X05                            delay_ms(200); //Tiempo de
                                           //muestreo
                                           }
  void main() {                        }
  int16 valor;
  int p;
      setup_adc_ports(AN0);
      setup_adc(ADC_CLOCK_INTERNAL);
Prof. Luis Zurita                                                     Microcontroladores II
Ejemplo 3. Realizar una conversión A/D de una señal proveniente de
un potenciómetro en un PIC16F877, y enviarlo al puerto serie de una
computadora. Visualizar los datos en LABVIEW (Opcional), además de
poder controlar el puerto B de un PIC16F873 desde la computadora.
  PROGRAMA DEL PIC ESCLAVO:          void main() {
  #include <16F873A.h>                  set_tris_b(0x00);
  #FUSES XT,NOWDT,NOPROTECT,NOLVP       enable_interrupts(INT_RDA);
  #use standard_io(c)                   enable_interrupts(GLOBAL);
  #use fast_io(b)                      while (1){
  #use delay(clock=4000000)             output_b(valor);}
  #use rs232(baud=9600, xmit=pin_c6, }
        rcv=pin_c7, bits=8, parity=N)
  int valor;

  #int_RDA //Interrupción por RX de datos
  RDA_isr(void){
     valor=GETC();}

Prof. Luis Zurita                                           Microcontroladores II
Información obtenida en LABVIEW              IUT Cumaná




Prof. Luis Zurita                                     Microcontroladores II
Información obtenida en LABVIEW              IUT Cumaná




Prof. Luis Zurita                                     Microcontroladores II
Puerto Serie en PROTEUS                  IUT Cumaná




  • El ISIS del PROTEUS proporciona un componente que
    permite la simulación a través del puerto serie:
    COMPIM.
  • Utilizando este componente no se necesita colocar un
    MAX232 para la simulación, debido a que el propio
    componente gestiona la comunicación con el puerto de
    la computadora.
  • Podemos entonces comunicarnos con nuestra propia
    computadora. Si se tiene 2 puertos serie o 1 serie y
    varios USB, con su respectivo cable convertidor, y así
    manejar los datos que provienen del PIC con diferentes
    programas de aplicación como Visual C, LABVIEW, entre
    otros.
Prof. Luis Zurita                                 Microcontroladores II
Puerto Serie en PROTEUS                                              IUT Cumaná




           P1
       1
             DCD
       6
             DSR
       2
             RXD
       7
             RTS
       3
             TXD
       8
             CTS
       4
             DTR
       9
             RI


                    ERROR
           COMPIM




La configuración del puerto se realiza como cualquier otro componente
y se pueden cambiar virtualmente todas las propiedades de un puerto
serie: número de puerto, velocidad, paridad, número de bits, entre
otros.
Prof. Luis Zurita                                         Microcontroladores II
Ejemplo 4. Realizar una conversión A/D de una señal proveniente de
un potenciómetro y enviarlo al puerto serie de una computadora.
  Para este ejercicio, se envían los datos del PIC al COMPIM 1. Para simular que los
     datos se reciben en otro puerto (la computadora), se utiliza otro simulador
     de puerto (COMPIM 2):
  #include <16F877.h>
  #device ADC=10
  #FUSES XT,NOWDT,NOPROTECT,NOLVP
  #use delay(clock=4000000)
  #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
  #include <LCD.C>

  void main() {
     int16 valor=0;
     float p=0.0;
     setup_adc_ports(AN0);
     setup_adc(ADC_CLOCK_INTERNAL);
     lcd_init();
Prof. Luis Zurita                                                         Microcontroladores II
Ejemplo 4. Realizar una conversión A/D de una señal proveniente de
un potenciómetro y enviarlo al puerto serie de una computadora.
  Continuación del ejercicio:
  for (;;) {
      set_adc_channel(0); // Conversión de la señal del potenciómetro
      delay_us(10);                     // Espera el TADQ
      valor = read_adc();     // Lee el valor de la conversión
      p =5.0 * valor / 1024.0;// Convierte el valor decimal a voltaje
        //Es lo mismo que utilizar p=0.004883*valor;
      printf(lcd_putc, "fADC =%LUn",valor);
      printf(lcd_putc,"VOLTAJE = %01.2fV",p);
      printf("ADC = %4ld ",valor); //Envío de información a la computadora
      printf("VOLTAJE = %01.2fVr", p); // El r permite cambiar de línea.
      delay_ms(100);
      }
  }


Prof. Luis Zurita                                                        Microcontroladores II
Configuración del COMPIM              IUT Cumaná




Prof. Luis Zurita                              Microcontroladores II
IUT Cumaná




                                                              Recibe




                    En este ejemplo no se recibe nada,
                    puesto que no se pudo conectar un
                    cable USB entre dos puertos de la
                    misma computadora.

                                                           Transmite
Prof. Luis Zurita                                        Microcontroladores II

Más contenido relacionado

La actualidad más candente

Programming ATmega microcontroller using Embedded C
Programming ATmega microcontroller using Embedded CProgramming ATmega microcontroller using Embedded C
Programming ATmega microcontroller using Embedded CVarun A M
 
Gal 22v10 Descripcion
Gal 22v10 DescripcionGal 22v10 Descripcion
Gal 22v10 DescripcionDiego Muela
 
Modulación ask
Modulación ask Modulación ask
Modulación ask David Inati
 
Lecture 12 radioenlaces terrenales servicio fijo p3
Lecture 12 radioenlaces terrenales servicio fijo   p3Lecture 12 radioenlaces terrenales servicio fijo   p3
Lecture 12 radioenlaces terrenales servicio fijo p3nica2009
 
04 radioenlaces terrestres_microondas_
04 radioenlaces terrestres_microondas_04 radioenlaces terrestres_microondas_
04 radioenlaces terrestres_microondas_rodrigo valdez rueda
 
Diseño y Construcción de antena Patch
Diseño y Construcción de antena PatchDiseño y Construcción de antena Patch
Diseño y Construcción de antena PatchDiegomendi
 
Redes especiales Emerson - Protocolo Hart - Redes en Domotica - Otros
Redes especiales  Emerson - Protocolo Hart - Redes en Domotica - OtrosRedes especiales  Emerson - Protocolo Hart - Redes en Domotica - Otros
Redes especiales Emerson - Protocolo Hart - Redes en Domotica - Otrosmarco calderon layme
 
Sincronización en Redes Telefónicas Públicas Conmutadas
Sincronización en Redes Telefónicas Públicas ConmutadasSincronización en Redes Telefónicas Públicas Conmutadas
Sincronización en Redes Telefónicas Públicas ConmutadasEng. Fernando Mendioroz, MSc.
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVRabemen
 
Tema 1b-modulacion-digital-multi-bit
Tema 1b-modulacion-digital-multi-bitTema 1b-modulacion-digital-multi-bit
Tema 1b-modulacion-digital-multi-biternestoguevaraventura
 
Memorias de un plc y su clasificación
Memorias de un plc y su clasificaciónMemorias de un plc y su clasificación
Memorias de un plc y su clasificaciónDaniel
 
Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1Enrique Zrt
 
Hardware interfacing basics using AVR
Hardware interfacing basics using AVRHardware interfacing basics using AVR
Hardware interfacing basics using AVRMohamed Abdallah
 

La actualidad más candente (20)

Programming ATmega microcontroller using Embedded C
Programming ATmega microcontroller using Embedded CProgramming ATmega microcontroller using Embedded C
Programming ATmega microcontroller using Embedded C
 
Gal 22v10 Descripcion
Gal 22v10 DescripcionGal 22v10 Descripcion
Gal 22v10 Descripcion
 
Modulación ask
Modulación ask Modulación ask
Modulación ask
 
Put
PutPut
Put
 
Lecture 12 radioenlaces terrenales servicio fijo p3
Lecture 12 radioenlaces terrenales servicio fijo   p3Lecture 12 radioenlaces terrenales servicio fijo   p3
Lecture 12 radioenlaces terrenales servicio fijo p3
 
04 radioenlaces terrestres_microondas_
04 radioenlaces terrestres_microondas_04 radioenlaces terrestres_microondas_
04 radioenlaces terrestres_microondas_
 
Diseño y Construcción de antena Patch
Diseño y Construcción de antena PatchDiseño y Construcción de antena Patch
Diseño y Construcción de antena Patch
 
Redes especiales Emerson - Protocolo Hart - Redes en Domotica - Otros
Redes especiales  Emerson - Protocolo Hart - Redes en Domotica - OtrosRedes especiales  Emerson - Protocolo Hart - Redes en Domotica - Otros
Redes especiales Emerson - Protocolo Hart - Redes en Domotica - Otros
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Sincronización en Redes Telefónicas Públicas Conmutadas
Sincronización en Redes Telefónicas Públicas ConmutadasSincronización en Redes Telefónicas Públicas Conmutadas
Sincronización en Redes Telefónicas Públicas Conmutadas
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVR
 
Communication protocols
Communication protocolsCommunication protocols
Communication protocols
 
3_PCM.pdf
3_PCM.pdf3_PCM.pdf
3_PCM.pdf
 
Tema 1b-modulacion-digital-multi-bit
Tema 1b-modulacion-digital-multi-bitTema 1b-modulacion-digital-multi-bit
Tema 1b-modulacion-digital-multi-bit
 
Memorias de un plc y su clasificación
Memorias de un plc y su clasificaciónMemorias de un plc y su clasificación
Memorias de un plc y su clasificación
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1
 
Curso de vhdl
Curso de vhdl Curso de vhdl
Curso de vhdl
 
Hardware interfacing basics using AVR
Hardware interfacing basics using AVRHardware interfacing basics using AVR
Hardware interfacing basics using AVR
 
codificacion de linea
codificacion de lineacodificacion de linea
codificacion de linea
 

Destacado

Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Luis Zurita
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2Luis Zurita
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3Luis Zurita
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CLuis Zurita
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2Luis Zurita
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3Luis Zurita
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesLuis Zurita
 
Robotica Aplicada Avances Primer Parcial
Robotica Aplicada Avances Primer ParcialRobotica Aplicada Avances Primer Parcial
Robotica Aplicada Avances Primer Parcialorcobot
 
Unidad iv tema 06 - equipo dcs - válvula de solenoide
Unidad iv   tema 06 - equipo dcs - válvula de solenoideUnidad iv   tema 06 - equipo dcs - válvula de solenoide
Unidad iv tema 06 - equipo dcs - válvula de solenoideacpicegudomonagas
 
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...MariaBarradas17
 

Destacado (20)

Usart
UsartUsart
Usart
 
Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
 
Protocolo comunicación serial
Protocolo comunicación serialProtocolo comunicación serial
Protocolo comunicación serial
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Adecuador
AdecuadorAdecuador
Adecuador
 
07.Conversor ad
07.Conversor ad07.Conversor ad
07.Conversor ad
 
Robotica Aplicada Avances Primer Parcial
Robotica Aplicada Avances Primer ParcialRobotica Aplicada Avances Primer Parcial
Robotica Aplicada Avances Primer Parcial
 
Unidad iv tema 06 - equipo dcs - válvula de solenoide
Unidad iv   tema 06 - equipo dcs - válvula de solenoideUnidad iv   tema 06 - equipo dcs - válvula de solenoide
Unidad iv tema 06 - equipo dcs - válvula de solenoide
 
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
 
Congreso Usfx
Congreso UsfxCongreso Usfx
Congreso Usfx
 
Uart
UartUart
Uart
 

Similar a MICROCONTROLADORES II EN C. TEMA 5

Similar a MICROCONTROLADORES II EN C. TEMA 5 (20)

Txusart
TxusartTxusart
Txusart
 
Sci asincrono
Sci asincronoSci asincrono
Sci asincrono
 
Clase USART
Clase USARTClase USART
Clase USART
 
Usart PIC config LANDA
Usart PIC config LANDAUsart PIC config LANDA
Usart PIC config LANDA
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
 
Puertoserial[1]
Puertoserial[1]Puertoserial[1]
Puertoserial[1]
 
Comunicación RS-232
Comunicación RS-232Comunicación RS-232
Comunicación RS-232
 
Stp spanning tree protocol.jpg
Stp  spanning tree protocol.jpgStp  spanning tree protocol.jpg
Stp spanning tree protocol.jpg
 
STP & SYSLOG
STP & SYSLOGSTP & SYSLOG
STP & SYSLOG
 
Microcontroladores de arquitectura X51
Microcontroladores de arquitectura X51Microcontroladores de arquitectura X51
Microcontroladores de arquitectura X51
 
Microcontroladores: Los microcontroladores AVR de ATMEL parte 2
Microcontroladores: Los microcontroladores AVR de ATMEL parte 2Microcontroladores: Los microcontroladores AVR de ATMEL parte 2
Microcontroladores: Los microcontroladores AVR de ATMEL parte 2
 
Funcionamiento del USART
Funcionamiento del USARTFuncionamiento del USART
Funcionamiento del USART
 
Conectores
ConectoresConectores
Conectores
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Usart 3
Usart 3Usart 3
Usart 3
 
Sistema competencias con el Stellaris
Sistema competencias con el StellarisSistema competencias con el Stellaris
Sistema competencias con el Stellaris
 
Redes de transporte
Redes de transporteRedes de transporte
Redes de transporte
 
dokumen.tips_introduccion-al-radio-de-microondas-zxmw-nr8250-v3.ppt
dokumen.tips_introduccion-al-radio-de-microondas-zxmw-nr8250-v3.pptdokumen.tips_introduccion-al-radio-de-microondas-zxmw-nr8250-v3.ppt
dokumen.tips_introduccion-al-radio-de-microondas-zxmw-nr8250-v3.ppt
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Arquitectura exposicion acceso memoria directa y transistores
Arquitectura exposicion  acceso memoria directa y transistoresArquitectura exposicion  acceso memoria directa y transistores
Arquitectura exposicion acceso memoria directa y transistores
 

Más de Luis Zurita

TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APALuis Zurita
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUSLuis Zurita
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y tecladoLuis Zurita
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13Luis Zurita
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronicaLuis Zurita
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iycLuis Zurita
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013Luis Zurita
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronicaLuis Zurita
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronicaLuis Zurita
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Luis Zurita
 
Acumuladas iyc2013
Acumuladas iyc2013Acumuladas iyc2013
Acumuladas iyc2013Luis Zurita
 

Más de Luis Zurita (20)

TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
Pevmicroi ieo
Pevmicroi ieoPevmicroi ieo
Pevmicroi ieo
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
 
Pev electronica
Pev electronicaPev electronica
Pev electronica
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronica
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iyc
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronica
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronica
 
Pevmicro2013
Pevmicro2013Pevmicro2013
Pevmicro2013
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013
 
Acumuladas iyc2013
Acumuladas iyc2013Acumuladas iyc2013
Acumuladas iyc2013
 
TMR0 Y RB0_INT
TMR0 Y RB0_INTTMR0 Y RB0_INT
TMR0 Y RB0_INT
 

Último

NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 

Último (20)

NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 

MICROCONTROLADORES II EN C. TEMA 5

  • 1. IUT Cumaná MICROCONTROLADORES II MÓDULO USART (Comunicación Serial Asíncrona) PROF. LUIS ZURITA
  • 2. IUT Cumaná INTRODUCCIÓN • En los sistemas con microcontroladores puede existir la necesidad de conectarse con el mundo exterior, y esto se logra mediante las comunicaciones seriales y paralelas. • En este tema se tratará la comunicación serial asíncrona mediante el módulo USART. Dicha comunicación permite establecer un enlace de comunicación tipo Full Duplex. TX RX RC6/TX Dispositivo RX TX RC7/RX Externo GND µC Prof. Luis Zurita Microcontroladores II
  • 3. IUT Cumaná PROTOCOLO RS-232 • Este protocolo es el utilizado por los microcontroladores y su módulo USART. • Cada dato se envía independientemente de los demás. • Consta de 8 ó 9 bits de datos • Consta de 1 bit de Inicio (START) • Consta de 1 bit de Parada (STOP) BIT INICIO BIT PARADA LSB DATO MSB Prof. Luis Zurita Microcontroladores II
  • 4. IUT Cumaná MÓDULO USART 1. Circuito de Muestreo (RC7/RX) 2. Generador de Baudios La frecuencia en baudios (bits por segundos) es la velocidad a la que se realiza la transferencia de datos. Valores normalizados: 330, 600, 1200, 2400, 4800, 9600, 19200, 38400, otros. • El USART tiene un generador de Frecuencia en baudios, BRG. Su valor es controlado por el Registro SPBRG. • La frecuencia en baudios del generador depende del bit BRGH del registro TXSTA (2). Prof. Luis Zurita Microcontroladores II
  • 5. IUT Cumaná MÓDULO USART • Si BRGH=1, se trabaja en alta velocidad y K= 16. • Si BRGH=0, se trabaja en baja velocidad y K= 64. • K se necesita para determinar la frecuencia de funcionamiento. Fosc Frecuencia _(baudios )  ( K  ( X  1)) Ejemplo. Halle el valor a cargar en SPBRG, si se desea trabajar con un PIC16F873, con un XT, a una baja velocidad y frecuencia de 9600 baudios. Prof. Luis Zurita Microcontroladores II
  • 6. IUT Cumaná TRANSMISOR ASÍNCRONO • El dato a transmitirse se coloca en TXREG. De inmediato pasa al registro de desplazamiento TSR, que empieza a sacar los bits secuencialmente, según la frecuencia establecida. Se incluye antes de los datos el bit de Inicio. Y después de los bits de datos, se agrega el bit de parada. • Como podemos ver, el corazón del transmisor lo constituye el TSR, cuyo contenido es cargado con el Dato a transmitir desde el TXREG. • Lo va sacando bit a bit desde el LSB hasta el MSB. Prof. Luis Zurita Microcontroladores II
  • 7. IUT Cumaná TRANSMISOR ASÍNCRONO • Existe un señalizador TXIF (PIR1,4) que se pone a 1, indicando que el TSR se ha vaciado. Si se ha habilitado la interrupción por esta causa con el bit TXIE (PIE1,4), se entrará en una RSI. • Cuando se escribe un nuevo dato a ser transmitido en el TXREG, el señalizador TXIF se pone a 0. • También existe otro bit, el TRMT (TXSTA,1) que se pone a 1 cuando el TSR está vacío. Prof. Luis Zurita Microcontroladores II
  • 8. IUT Cumaná TRANSMISOR ASÍNCRONO Prof. Luis Zurita Microcontroladores II
  • 9. IUT Cumaná TX9D TXREG TX9=1 1 bit 8 bits REGISTRO DE DESPLAZAMIENTO DE SALIDA RC6/TX TX9D: 9 bits de datos transmitidos. Puede ser el bit de paridad 1 0 1 D0 D1 D2 D3 D4 D5 D6 D7 Bit start Bit stop 1 0 1 TX9D D0 D1 D2 D3 D4 D5 D6 D7 Bit start Bit stop Prof. Luis Zurita Tramas a enviar Microcontroladores II
  • 10. PASOS PARA LOGRAR IUT Cumaná TRANSMISIÓN ASÍNCRONA (Aplica en ASM) 1. Configurar RC6/TX como salida y RC7/RX como entrada. 2. Inicializar el registro SPBRG con el valor apropiado según los cálculos realizados. Si se desea el margen alto se pondrá a uno el bit BRGH. 3. Habilitar USART en modo asíncrono con SYN= 0 y SPEN= 1. 4. Habilitar la interrupción (opcional) con TXIE=1. (PIE1,4). 5. Poner a cero o a uno el bit TX9 (8 ó 9 bits). 6. Habilitar la transmisión con TXEN= 1, el cual pondrá a uno el bit TXIF. 7. Si se han seleccionado 9 bits se deber poner el noveno en el bit TX9D. 8. Cargar el dato en el registro TXREG (comenzar la transmisión). Prof. Luis Zurita Microcontroladores II
  • 11. TXSTA IUT Cumaná bit 7: CSRC: Bit de selección de reloj Modo Asíncrono: Sin importancia Modo Síncrono 1 = Modo master (reloj generado internamente para BRG (Generador de Baudios)) 0 = Modo esclavo (reloj externo) bit 6: TX9: Habilita transmisión de 9-8 bits 1 = Transmisión de 9 bits 0 = Transmisión de 8 bits bit 5: TXEN: Bit de habilitación del transmisor 1 = Habilita transmisión 0 = Deshabilita transmisión (Nota: SREN/CREN anula TXEN en modo SYNC.) bit 4: SYNC: Bit de selección del modo USART 1 = Modo Síncrono 0 = Modo Asíncrono Prof. Luis Zurita Microcontroladores II
  • 12. TXSTA IUT Cumaná bit 3: Sin implementar: En lectura es'0' bit 2: BRGH: Bit de selección del rango de baudios alto Modo Asíncrono 1 = Alta velocidad 0 = Baja velocidad Modo Síncrono: No se usa este modo bit 1: TRMT: Bit de estado del registro de desplazamiento del transmisor (TSR) 1 = TSR vacío 0 = TSR lleno bit 0: TX9D: Noveno bit de datos de transmisión. Se puede emplear como bit de paridad. Prof. Luis Zurita Microcontroladores II
  • 13. IUT Cumaná RECEPTOR ASÍNCRONO • Los datos se reciben en serie, bit a bit, por el pin RC7/RX, y se van introduciendo secuencialmente en el registro de desplazamiento RSR, que opera a una frecuencia 16 veces más rápida que la de trabajo. • Después de recibir el bit de Stop los datos acumulados en este registro se cargan en el de datos RCREG (si está vacío). Cuando la transferencia se ha completado, el bit RCIF (PIR1,5) se pone a uno. La interrupción puede habilitarse o deshabilitarse colocando a uno o borrando, respectivamente, el bit RCIE (PIE1,5). El bit RCIF se borra cuando el registro RCREG se ha leído (se "vacía" el registro). • Cuando se tiene el formato de 9 bits de datos, hay que programar el RX9=1 (RCSTA,6) y el 9no bit de dato se colocará en RX9D (RCSTA,0) Prof. Luis Zurita Microcontroladores II
  • 14. IUT Cumaná RECEPTOR ASÍNCRONO Prof. Luis Zurita Microcontroladores II
  • 15. IUT Cumaná RC7/RX REGISTRO DE DESPLAZAMIENTO DE SALIDA 1 bit 8 bits Buffer FIFO RX9=1 RX9D RCREG Recepción de datos Prof. Luis Zurita Microcontroladores II
  • 16. PASOS PARA LOGRAR IUT Cumaná RECEPCIÓN ASÍNCRONA (Aplica en ASM) 1. Configurar RC6/TX como salida y RC7/RX como entrada. 2. Inicializar el registro SPBRG con el valor apropiado según los cálculos realizados. Si se desea el margen alto se pondrá a uno el bit BRGH. 3. Habilitar USART en modo asíncrono con SYN= 0 y SPEN= 1. 4. Habilitar la interrupción (si se desea ) poniendo a uno el bit RCIE (PIE1,5). 5. Poner a uno el bit RX9 (RCSTA,6) para habilitar 9 bits de recepción. 6. Habilitar la recepción poniendo a uno el bit CREN. 7. El flag RCIF subirá a uno cuando se complete la recepción y se ocasionará una interrupción si está habilitado el bit RCIE. 8. Leer el registro RCSTA, cargar el noveno bit (si está habilitado) y comprobar si ha ocurrido un error durante la recepción. 9. Leer el octavo bit recibido y dar lectura al registro RCREG para conocer si el dispositivo se ha direccionado. 10. Si ha ocurrido un error borrarlo poniendo a cero el bit CREN. 11. Si el dispositivo ha sido direccionado, borrar el bit ADDEN para permitir que los datos puedan leerse del buffer receptor Prof. Luis Zurita Microcontroladores II
  • 17. RCSTA IUT Cumaná bit 7: SPEN: Bit de habilitación del puerto serie 1 = Habilita puerto serie (configura patillas RC7/RX/DT y RC6/TX/CK para el puerto serie) 0 = Deshabilita puerto serie bit 6: RX9: Habilita recepción de 9-8 bits 1 = Selecciona 9 bits de recepción 0 = Selecciona 8 bits de recepción bit 5: SREN: Bit de habilitación de recepción única Modo asíncrono: Este modo no se usa Modo Síncrono master: 1 = Habilita una recepción única 0 = Deshabilita una recepción única Este bit se borra después de completar la recepción Modo Síncrono esclavo: En este modo no se usa. Prof. Luis Zurita Microcontroladores II
  • 18. RCSTA IUT Cumaná bit 4: CREN: Bit de habilitación de recepción continua Modo Asíncrono 1 = Habilita recepción continua 0 = Deshabilita recepción continua Modo Síncrono 1 = Habilita recepción continua hasta que el bit CREN sea borrado. 0 = Deshabilita la recepción continua bit 3: Sin implementar: En lectura es '0' bit 2: FERR: Bit de error de empaquetamiento 1 = Error de empaquetamiento (Puede actualizarse al leer el registro RCREG y recibir el siguiente byte) 0 = No hay error bit 1: OERR: Bit de error de desbordamiento 1 = Error de desbordamiento (puede ser borrado al borrar CREN) 0 = No hay desbordamiento bit 0:RXGD: Noveno bit de datos de recepción. Se puede emplear como bit de paridad Prof. Luis Zurita Microcontroladores II
  • 19. Módulo USART en C IUT Cumaná • Las siguientes directivas permiten una configuración genérica del módulo USART: #USE RS232 (opciones) Esta directiva permite configurar varios parámetros del módulo USART, tales como la velocidad de transmisión, pines utilizados, entre otros. Se puede modificar en cualquier parte del programa, pero siempre después de haber definido la directiva #USE DELAY. Esta directiva habilita el uso de funciones tales como GETCH, PUTCHAR y PRINTF. Permite su uso en dispositivos que no poseen módulo USART mediante software USART. Cuando se utilizan dispositivos con USART, si no se puede alcanzar una tasa de baudios dentro del 3 % del valor deseado utilizando la frecuencia de reloj actual, se generará un error. Prof. Luis Zurita Microcontroladores II
  • 20. Módulo USART en C IUT Cumaná BAUD=X Velocidad en Baudios XMIT=pin Pin de transmisión RCV= pin Pin de recepción FORCE_SW Usa un software UART en lugar del hardware, aún cuando se especifican los pines del hardware. RESTART_WDT Hace que la función GETC ( ) ponga a cero el WDT mientras espera un carácter. BRGH1OK Permite velocidades de transmisión bajas en chips que tienen problemas de transmisión. Prof. Luis Zurita Microcontroladores II
  • 21. Módulo USART en C IUT Cumaná ENABLE= pin El pin especificado estará a nivel alto durante la transmisión. Utilizado en transmisión 485. DEBUGGER Permite depuración a través del ICD. El pin por defecto es el B3; INVERT Invierte la polaridad de los pines serie (normalmente no es necesario con el convertidor de nivel, como el MAX232). No puede usarse con el USART interno. PARITY= X Donde X es N,E u O BITS= X Donde X es 5-9 (no puede usarse 5-7 con el USART interno). FLOAT_HIGH Se utiliza para las salidas de colector abierto. Prof. Luis Zurita Microcontroladores II
  • 22. Módulo USART en C IUT Cumaná ERRORS Indica al compilador que guarde los errores recibidos en la variable RS232_ERRORS para restablecerlos cuando se producen. SAMPLE_EARLY No se puede utilizar con el USART interno. Provoca que el muestreo del dato a través de la función GETC ( ) se realice al principio de un bit de tiempo. RETURN= pin Para FLOAT_HIGH y MULTI_MASTER, este pin se usa para leer la señal de retorno. Por defecto, para FLOAT_HIGH es XMIT y para MULTIMASTER es RCV. MULTI_MASTER Usa el pin de RETURN para determinar si otro master en el bus está transmitiendo al mismo tiempo. Si se detecta una colisión, el bit 6 se pone a 1 en RS232_ERRORS y todos los posibles PUTC ( ) son ignorados hasta que el bit 6 esté a 0. La señal es comprobada al final y al principio de cada bit de tiempo. No se puede utilizar con USART interno. LONG_DATA Permite manejar INT16 a las funciones GETC ( ) y PUTC ( ). En formatos de datos de 9 bits. DISABLE_INTS Provoca la deshabilitación de interrupciones cuando se ejecuta GETC ( ) y PUTC ( ) evitando distorsiones en los datos. Prof. Luis Zurita Microcontroladores II
  • 23. Módulo USART en C IUT Cumaná STOP= x Número de bits de stop (por defecto 1) TIMEOUT= x Para establecer el tiempo que GETC ( ) espera un carácter (en ms). Si no se recibe carácter en este tiempo, el RS232_ERRORS se pone a 0. SYNC_SLAVE Provoca una línea RS232 en modo esclavo síncrono, haciendo el pin de recepción como entrada de reloj y la de transmisión como entrada/salida de datos. SYNC_MASTER Provoca una línea RS232 en modo maestro síncrono, haciendo el pin de recepción como salida de reloj y la de transmisión como entrada/salida de datos. UART1 Configura el XMIT y RCV para el USART1 UART2 Configura el XMIT y RCV para el USART2 Prof. Luis Zurita Microcontroladores II
  • 24. Módulo USART en C IUT Cumaná Ejemplos: #use delay (clock=20000000); #use rs232 (BAUD=9600 , XMIT=PIN_C6 , RCV=PIN_C7 , BITS=8) #use rs232 (BAUD=9600 , XMIT=PIN_A2 , RCV=PIN_A3) Setup_uart(baud) baud es una constante que define la velocidad. Un 1 enciende el USART y un 0 lo apaga. Con cualquier valor de velocidad, el USART se enciende. set_uart_speed (baud) Idéntica a la función anterior. Ejemplo: // Se establece la velocidad mediante la combinación de los pines B0 y B1: switch (input_b ( ) & 3){ case 0: set_uart_speed(2400); break; case 1: set_uart_speed(4800); break; case 2: set_uart_speed(9600); break; case 3: set_uart_speed(19200); break; Prof. Luis Zurita Microcontroladores II
  • 25. Módulo USART en C IUT Cumaná Transmisión de datos: putc (cdata) putchar (cdata) cdata es un carácter de 8 bits. Esta función envía un carácter mediante el pin XMIT. La directiva #USE RS232 debe situarse siempre antes de utilizar esta función. puts (string) string: cadena de caracteres constante o matriz de caracteres terminada con un 0. La funcióon puts ( ) manda los caracteres de la cadena, uno a uno, a través del bus RS232 utilizando la función PUTC ( ); detrás de la cadena envía un RETURN (13) y un retorno de carro (10) Prof. Luis Zurita Microcontroladores II
  • 26. Módulo USART en C IUT Cumaná printf (fname, cstring, values…) cstring: es una cadena de caracteres (constante) o matriz de caracteres terminada con un cero. fname: las funciones a utilizar para escribir la cadena indicada; por defecto se utiliza la función PUTC ( ), que permite escribir en el bus RS232. values: valores a incluir en la cadena separados por comas; se debe indicar %nt. El formato es %nt, donde n es opcional y puede ser: 1-9 para especificar cuantos caracteres deben ser especificados; 01-09 para indicar la cantidad de ceros a la izquierda. 1.1-9.9 para coma flotante. Prof. Luis Zurita Microcontroladores II
  • 27. Módulo USART en C IUT Cumaná t puede indicar: c Carácter s Cadena o carácter u Entero sin signo d Entero con signo Lu Entero sin signo Ld Entero largo con signo x Entero hexadecimal (minúscula) X Entero hexadecimal (mayúscula) Lx Entero largo hexadecimal (minúscula) LX Entero largo hexadecimal (mayúscula) f Flotante con truncado g Flotante con redondeo e Flotante en formato exponencial w Entero sin signo con decimales insertados. La 1ra cifra indica el total, la 2da el número de decimales. Prof. Luis Zurita Microcontroladores II
  • 28. Módulo USART en C IUT Cumaná Recepción de datos: value= getc ( ); value= getch ( ); value= getchar ( ); value (valor) es un carácter de 8 bits. Espera recibir un carácter por la línea RS232 y devuelve su valor. En los dispositivos con USART interno, se pueden almacenar hasta tres caracteres; para evitar esperas se puede utilizar la función KBHIT ( ). valor= kbhit ( ); valor es 0 (FALSE) si GETC ( ) debe esperar a que llegue un carácter; 1 (TRUE) si ya hay un carácter listo para ser leído por la función GETC ( ). Prof. Luis Zurita Microcontroladores II
  • 29. Ejemplo 1. Enviar los datos del 0 al 10, en modo asíncrono, entre dos PICS. Visualizar con un LCD, los datos enviados y los datos recibidos; la recepción del dato deberá ser por interrupción del USART. // PIC MAESTRO #include <16F877.h> #FUSES XT,NOWDT #use delay(clock=4000000) #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7) #include <LCD.C> void main() { int valor; lcd_init(); while(1){ for (valor=0;valor<=10;valor++) { PUTC(valor); // Envia valor printf(lcd_putc,"fENVIANDOn"); printf(lcd_putc,"%1D",valor); delay_ms(2000); } } } Prof. Luis Zurita Microcontroladores II
  • 30. // PIC ESCLAVO #include <16F877.h> IUT Cumaná #FUSES XT,NOWDT #use delay(clock=4000000) #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8) #include <LCD.C> #BYTE TRISA=0X85 #BYTE PORTA=0X05 int valor; #int_RDA RDA_isr() { valor=GETC();} //Recibe valor void main() { bit_clear(TRISA,0); lcd_init(); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); for (;;) { lcd_gotoxy(1,1); printf(lcd_putc,"recibiendo=%1D",valor); } } Prof. Luis Zurita Microcontroladores II
  • 31. IUT Cumaná Con el “Virtual Terminal”, presionando el botón derecho del mouse y seleccionando Hex display mode, podemos visualizar los datos que se están recibiendo. Prof. Luis Zurita Microcontroladores II
  • 32. La norma RS232 IUT Cumaná • Es la más básica de las comunicaciones serie. Comunica un equipo terminal de datos (DTE) con el equipo de comunicación de datos (DCE). • Las características eléctricas de la señal en esta norma establecen que la longitud máxima entre dos equipos no debe ser superior a 15 metros, sin embargo, el autor ha realizado pruebas de campo que permiten alcanzar los 30 metros. La velocidad máxima de transmisión es de 20 kbps. Los niveles lógicos no son compatibles con los niveles TTL, ya que se situan dentro de los siguientes rangos: 1 lógico entre -3 v a -15 v y 0 lógico entre +3 v a +15 v. • Se utilizan conectores DB9 y DB25. Prof. Luis Zurita Microcontroladores II
  • 33. La norma RS232 IUT Cumaná • Para una comunicación full duplex desde el USART del PIC, se debe conectar un mínimo número de señales, a saber: TXD, RXD y tierra (GND). Los PICS utilizan señal TTL en el módulo USART, por lo que debe utilizarse un convertidor de niveles a RS232, como el circuito integrado MAX232 RX TX TX RX MAX232 GND GND NIVELES TTL NIVELES RS232 Prof. Luis Zurita Microcontroladores II
  • 34. Circuito integrado MAX232 IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 35. • En la actualidad, las computadoras desde el año 1996 han ido erradicando el puerto serie con el conector DB9 y DB25, por el IUT Cumaná puerto USB (Universal Serial Port). • Una solución ha sido la implementación de cables de conversión USB-232. • Sin embargo, los microcontroladores de la familia PIC18, integran un módulo USB para comunicaciones como protocolo de comunicación. Convertidor Módulo Módulo USB-232 USART USB Familia PIC16F87X PIC PIC Familia PIC18 Prof. Luis Zurita Microcontroladores II
  • 36. Ejemplo 2. Realizar un sistema Maestro-Esclavo multi- IUT Cumaná selector. • La selección de las órdenes se realiza mediante un teclado y se visualizan en una pantalla LCD en el Maestro. • Si se presiona 1, el Maestro envía el dato: 17H, el esclavo activa el led Rojo y muestra en una pantalla LCD: ORDEN1. • Si se presiona 4, el Maestro envía el dato: 2DH, el esclavo activa el led amarillo y muestra en una pantalla LCD: ORDEN2. • Si se presiona 7 el Maestro envía el dato: 64H, el esclavo activa el led verde y muestra en una pantalla LCD: ORDEN3. • Si se presiona cualquier otra tecla, el Maestro envía el dato: C2H, el esclavo desactiva todos los leds y muestra en una pantalla LCD: TODOS OFF. Prof. Luis Zurita Microcontroladores II
  • 37. Ejemplo 2. Sistema Maestro-Esclavo multi- selector. IUT Cumaná Programa del Maestro: #include <16f877.h> if (k!=0) { #fuses XT,NOWDT,NOPROTECT,NOLVP if (x==1) #use delay (CLOCK = 4000000) {valor=0x17; #use rs232(baud=9600, xmit=pin_c6, PUTC(valor); rcv=pin_c7) printf(lcd_putc,"fORDEN 1");} #define use_portb_kbd TRUE else if (x==4) #define use_portd_lcd TRUE {valor=0x2D; #include <lcd.c> PUTC(valor); #include <kbd.c> printf(lcd_putc,"fORDEN 2");} else if (x==7) void main() { {valor=0x64; char k; PUTC(valor); int x; printf(lcd_putc,"fORDEN 3");} int valor; else lcd_init(); {valor=0xC2; kbd_init(); PUTC(valor); port_b_pullups(TRUE); printf(lcd_putc,"fTODOS OFF"); printf(lcd_putc,"fPRESIONE FUNCION"); delay_ms(1000);} OUTPUT_C(0x00); } while (TRUE) { } k=kbd_getc(); } x=k-48; Prof. Luis Zurita Microcontroladores II
  • 38. Ejemplo 2. Sistema Maestro-Esclavo multi- selector. IUT Cumaná Programa del Esclavo: #include <16f877.h> delay_ms(50);} #fuses XT,NOWDT else if (valor==0x2D) #use delay(CLOCK=4000000) {printf(lcd_putc,"fORDEN 2"); #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, output_low (PIN_C0); bits=8) output_high (PIN_C1); #define use_portd_lcd TRUE output_low (PIN_C2); #include <lcd.c> delay_ms(50);} int valor; else if (valor==0X64) {printf(lcd_putc,"fORDEN 3"); #int_RDA output_low (PIN_C0); RDA_isr(void){ output_low (PIN_C1); valor=GETC();} output_high (PIN_C2); delay_ms(50);} void main() { else if (valor==0XC2) set_tris_c(0x80); {printf(lcd_putc,"fTODOS OFF"); lcd_init(); output_low (PIN_C0); enable_interrupts(INT_RDA); output_low (PIN_C1); enable_interrupts(GLOBAL); output_low (PIN_C2); while (TRUE) { delay_ms(50);} if (valor==0x17) else{ {printf(lcd_putc,"fORDEN 1"); } output_high (PIN_C0); } output_low (PIN_C1); } Prof. Luis Zurita output_low (PIN_C2); Microcontroladores II
  • 39. Ejemplo 2. Sistema Maestro-Esclavo multi- selector. IUT Cumaná Simulación del Programa: Prof. Luis Zurita Microcontroladores II
  • 40. Ejemplo 2. Sistema Maestro-Esclavo multi- selector. IUT Cumaná Simulación del Programa: Prof. Luis Zurita Microcontroladores II
  • 41. Ejemplo 2. Sistema Maestro-Esclavo multi- selector. IUT Cumaná Simulación del Programa: Prof. Luis Zurita Microcontroladores II
  • 42. Ejemplo 2. Sistema Maestro-Esclavo multi- selector. IUT Cumaná Simulación del Programa: Prof. Luis Zurita Microcontroladores II
  • 43. Ejemplo 3. Realizar una conversión A/D de una señal proveniente de un potenciómetro en un PIC16F877, y enviarlo al puerto serie de una computadora. Visualizar los datos en LABVIEW (Opcional), además de poder controlar el puerto B de un PIC16F873 desde la computadora. PROGRAMA DEL PIC MAESTRO: for (;;) { #include <16F877A.h> set_adc_channel(0); // Conversión #device ADC=10 //de la señal del potenciómetro #FUSES XT,NOWDT,NOPROTECT,NOLVP delay_ms(10); // Espera el TADQ #use standard_io(c) valor = read_adc(); // Lee el valor #use delay(clock=4000000) de //la conversión #use rs232(baud=9600, xmit=pin_c6, p=valor*0.098; // Factor escalar rcv=pin_c7, bits=8, parity=N) //para pasar de 0-1023 a 0-100 #BYTE TRISA=0X85 putc(p); #BYTE PORTA=0X05 delay_ms(200); //Tiempo de //muestreo } void main() { } int16 valor; int p; setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); Prof. Luis Zurita Microcontroladores II
  • 44. Ejemplo 3. Realizar una conversión A/D de una señal proveniente de un potenciómetro en un PIC16F877, y enviarlo al puerto serie de una computadora. Visualizar los datos en LABVIEW (Opcional), además de poder controlar el puerto B de un PIC16F873 desde la computadora. PROGRAMA DEL PIC ESCLAVO: void main() { #include <16F873A.h> set_tris_b(0x00); #FUSES XT,NOWDT,NOPROTECT,NOLVP enable_interrupts(INT_RDA); #use standard_io(c) enable_interrupts(GLOBAL); #use fast_io(b) while (1){ #use delay(clock=4000000) output_b(valor);} #use rs232(baud=9600, xmit=pin_c6, } rcv=pin_c7, bits=8, parity=N) int valor; #int_RDA //Interrupción por RX de datos RDA_isr(void){ valor=GETC();} Prof. Luis Zurita Microcontroladores II
  • 45. Información obtenida en LABVIEW IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 46. Información obtenida en LABVIEW IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 47. Puerto Serie en PROTEUS IUT Cumaná • El ISIS del PROTEUS proporciona un componente que permite la simulación a través del puerto serie: COMPIM. • Utilizando este componente no se necesita colocar un MAX232 para la simulación, debido a que el propio componente gestiona la comunicación con el puerto de la computadora. • Podemos entonces comunicarnos con nuestra propia computadora. Si se tiene 2 puertos serie o 1 serie y varios USB, con su respectivo cable convertidor, y así manejar los datos que provienen del PIC con diferentes programas de aplicación como Visual C, LABVIEW, entre otros. Prof. Luis Zurita Microcontroladores II
  • 48. Puerto Serie en PROTEUS IUT Cumaná P1 1 DCD 6 DSR 2 RXD 7 RTS 3 TXD 8 CTS 4 DTR 9 RI ERROR COMPIM La configuración del puerto se realiza como cualquier otro componente y se pueden cambiar virtualmente todas las propiedades de un puerto serie: número de puerto, velocidad, paridad, número de bits, entre otros. Prof. Luis Zurita Microcontroladores II
  • 49. Ejemplo 4. Realizar una conversión A/D de una señal proveniente de un potenciómetro y enviarlo al puerto serie de una computadora. Para este ejercicio, se envían los datos del PIC al COMPIM 1. Para simular que los datos se reciben en otro puerto (la computadora), se utiliza otro simulador de puerto (COMPIM 2): #include <16F877.h> #device ADC=10 #FUSES XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N) #include <LCD.C> void main() { int16 valor=0; float p=0.0; setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); lcd_init(); Prof. Luis Zurita Microcontroladores II
  • 50. Ejemplo 4. Realizar una conversión A/D de una señal proveniente de un potenciómetro y enviarlo al puerto serie de una computadora. Continuación del ejercicio: for (;;) { set_adc_channel(0); // Conversión de la señal del potenciómetro delay_us(10); // Espera el TADQ valor = read_adc(); // Lee el valor de la conversión p =5.0 * valor / 1024.0;// Convierte el valor decimal a voltaje //Es lo mismo que utilizar p=0.004883*valor; printf(lcd_putc, "fADC =%LUn",valor); printf(lcd_putc,"VOLTAJE = %01.2fV",p); printf("ADC = %4ld ",valor); //Envío de información a la computadora printf("VOLTAJE = %01.2fVr", p); // El r permite cambiar de línea. delay_ms(100); } } Prof. Luis Zurita Microcontroladores II
  • 51. Configuración del COMPIM IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 52. IUT Cumaná Recibe En este ejemplo no se recibe nada, puesto que no se pudo conectar un cable USB entre dos puertos de la misma computadora. Transmite Prof. Luis Zurita Microcontroladores II