MICROCONTROLADORES II EN C. TEMA 5

52
MICROCONTROLADORES II MÓDULO USART (Comunicación Serial Asíncrona) PROF. LUIS ZURITA IUT Cumaná

Transcript of MICROCONTROLADORES II EN C. TEMA 5

Page 1: MICROCONTROLADORES II EN C. TEMA 5

MICROCONTROLADORES IIMÓDULO USART

(Comunicación Serial Asíncrona)

PROF. LUIS ZURITA

IUT Cumaná

Page 2: MICROCONTROLADORES II EN C. TEMA 5

INTRODUCCIÓN

• En los sistemas con microcontroladores puede existirla necesidad de conectarse con el mundo exterior, yesto se logra mediante las comunicaciones seriales yparalelas.

• En este tema se tratará la comunicación serialasíncrona mediante el módulo USART. Dichacomunicación permite establecer un enlace decomunicación tipo Full Duplex.

DispositivoExterno

TX

TX

RX

RX

GND

RC6/TX

RC7/RX

µC

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 3: MICROCONTROLADORES II EN C. TEMA 5

PROTOCOLO RS-232

• Este protocolo es el utilizado por losmicrocontroladores y su módulo USART.

• Cada dato se envía independientemente de losdemá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

DATOLSB MSB

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 4: MICROCONTROLADORES II EN C. TEMA 5

MÓDULO USART

1. Circuito de Muestreo (RC7/RX)2. Generador de Baudios

La frecuencia en baudios (bits por segundos) es lavelocidad a la que se realiza la transferencia dedatos. Valores normalizados: 330, 600, 1200, 2400,4800, 9600, 19200, 38400, otros.

• El USART tiene un generador de Frecuencia enbaudios, BRG. Su valor es controlado por elRegistro SPBRG.

• La frecuencia en baudios del generador dependedel bit BRGH del registro TXSTA (2).

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 5: MICROCONTROLADORES II EN C. TEMA 5

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 defuncionamiento.

))1(()_(

XK

FoscbaudiosFrecuencia

Ejemplo. Halle el valor a cargar en SPBRG, si se deseatrabajar con un PIC16F873, con un XT, a una bajavelocidad y frecuencia de 9600 baudios.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 6: MICROCONTROLADORES II EN C. TEMA 5

TRANSMISOR ASÍNCRONO

• El dato a transmitirse se coloca en TXREG. Deinmediato pasa al registro de desplazamiento TSR,que empieza a sacar los bits secuencialmente, segúnla frecuencia establecida. Se incluye antes de losdatos 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 loconstituye el TSR, cuyo contenido es cargado con elDato a transmitir desde el TXREG.

• Lo va sacando bit a bit desde el LSB hasta el MSB.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 7: MICROCONTROLADORES II EN C. TEMA 5

TRANSMISOR ASÍNCRONO

• Existe un señalizador TXIF (PIR1,4) que se pone a 1,indicando que el TSR se ha vaciado. Si se hahabilitado la interrupción por esta causa con el bitTXIE (PIE1,4), se entrará en una RSI.

• Cuando se escribe un nuevo dato a ser transmitidoen el TXREG, el señalizador TXIF se pone a 0.

• También existe otro bit, el TRMT (TXSTA,1) que sepone a 1 cuando el TSR está vacío.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 8: MICROCONTROLADORES II EN C. TEMA 5

TRANSMISOR ASÍNCRONO

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 9: MICROCONTROLADORES II EN C. TEMA 5

TX9D

TX9=1 1 bitTXREG

REGISTRO DE DESPLAZAMIENTO DE SALIDA

8 bits

RC6/TX

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

D0 D1 D2 D3 D4 D5 D6 D71 10

Bit start Bit stop

D0 D1 D2 D3 D4 D5 D6 D71 10

Bit start Bit stop

TX9

D

Tramas a enviarProf. Luis Zurita Microcontroladores II

IUT Cumaná

Page 10: MICROCONTROLADORES II EN C. TEMA 5

PASOS PARA LOGRARTRANSMISIÓ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 elbit 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

IUT Cumaná

Page 11: MICROCONTROLADORES II EN C. TEMA 5

TXSTA

bit 7: CSRC: Bit de selección de relojModo Asíncrono: Sin importancia

Modo Síncrono1 = Modo master (reloj generado internamente para BRG(Generador de Baudios))0 = Modo esclavo (reloj externo)

bit 6: TX9: Habilita transmisión de 9-8 bits1 = Transmisión de 9 bits0 = Transmisión de 8 bits

bit 5: TXEN: Bit de habilitación del transmisor1 = Habilita transmisión0 = Deshabilita transmisión (Nota: SREN/CREN anula TXEN

en modo SYNC.)bit 4: SYNC: Bit de selección del modo USART

1 = Modo Síncrono0 = Modo Asíncrono

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 12: MICROCONTROLADORES II EN C. TEMA 5

bit 3: Sin implementar: En lectura es'0'bit 2: BRGH: Bit de selección del rango de baudios alto

Modo Asíncrono1 = Alta velocidad0 = Baja velocidadModo Síncrono: No se usa este modo

bit 1: TRMT: Bit de estado del registro de desplazamiento deltransmisor (TSR)1 = TSR vacío0 = TSR lleno

bit 0: TX9D: Noveno bit de datos de transmisión. Se puedeemplear como bit de paridad.

TXSTA

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 13: MICROCONTROLADORES II EN C. TEMA 5

RECEPTOR ASÍNCRONO

• Los datos se reciben en serie, bit a bit, por el pin RC7/RX, y sevan introduciendo secuencialmente en el registro dedesplazamiento RSR, que opera a una frecuencia 16 vecesmás rápida que la de trabajo.

• Después de recibir el bit de Stop los datos acumulados en esteregistro 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 odeshabilitarse colocando a uno o borrando, respectivamente,el bit RCIE (PIE1,5). El bit RCIF se borra cuando el registroRCREG se ha leído (se "vacía" el registro).

• Cuando se tiene el formato de 9 bits de datos, hay queprogramar el RX9=1 (RCSTA,6) y el 9no bit de dato se colocaráen RX9D (RCSTA,0)

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 14: MICROCONTROLADORES II EN C. TEMA 5

RECEPTOR ASÍNCRONO

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 15: MICROCONTROLADORES II EN C. TEMA 5

Recepción de datos

RX9=1

Buffer

REGISTRO DE DESPLAZAMIENTO DE SALIDA

8 bits

RC7/RX

RX9D RCREG

1 bit

FIFO

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 16: MICROCONTROLADORES II EN C. TEMA 5

PASOS PARA LOGRARRECEPCIÓ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álculosrealizados. 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

IUT Cumaná

Page 17: MICROCONTROLADORES II EN C. TEMA 5

bit 7: SPEN: Bit de habilitación del puerto serie1 = Habilita puerto serie (configura patillas RC7/RX/DT y RC6/TX/CKpara el puerto serie)0 = Deshabilita puerto serie

bit 6: RX9: Habilita recepción de 9-8 bits1 = Selecciona 9 bits de recepción0 = Selecciona 8 bits de recepción

bit 5: SREN: Bit de habilitación de recepción únicaModo asíncrono: Este modo no se usaModo Síncrono master:1 = Habilita una recepción única0 = Deshabilita una recepción únicaEste bit se borra después de completar la recepciónModo Síncrono esclavo: En este modo no se usa.

RCSTA

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 18: MICROCONTROLADORES II EN C. TEMA 5

bit 4: CREN: Bit de habilitación de recepción continuaModo Asíncrono1 = Habilita recepción continua0 = Deshabilita recepción continuaModo Síncrono1 = 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 registroRCREG y recibir el siguiente byte)0 = No hay error

bit 1: OERR: Bit de error de desbordamiento1 = 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 deparidad

RCSTA

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 19: MICROCONTROLADORES II EN C. TEMA 5

Módulo USART en C

• Las siguientes directivas permiten una configuración genéricadel módulo USART:

#USE RS232 (opciones)

Esta directiva permite configurar varios parámetros del móduloUSART, tales como la velocidad de transmisión, pinesutilizados, entre otros. Se puede modificar en cualquier partedel programa, pero siempre después de haber definido ladirectiva #USE DELAY.

Esta directiva habilita el uso de funciones tales como GETCH,PUTCHAR y PRINTF. Permite su uso en dispositivos que noposeen módulo USART mediante software USART.

Cuando se utilizan dispositivos con USART, si no se puedealcanzar una tasa de baudios dentro del 3 % del valor deseadoutilizando la frecuencia de reloj actual, se generará un error.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 20: MICROCONTROLADORES II EN C. TEMA 5

Módulo USART en C

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 delhardware.

RESTART_WDT Hace que la función GETC ( ) ponga a cero elWDT mientras espera un carácter.

BRGH1OK Permite velocidades de transmisión bajas enchips que tienen problemas de transmisión.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 21: MICROCONTROLADORES II EN C. TEMA 5

Módulo USART en C

ENABLE= pin El pin especificado estará a nivel alto durante latransmisión. Utilizado en transmisión 485.

DEBUGGER Permite depuración a través del ICD. El pin pordefecto es el B3;

INVERT Invierte la polaridad de los pines serie(normalmente no es necesario con elconvertidor de nivel, como el MAX232). Nopuede 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 elUSART interno).

FLOAT_HIGH Se utiliza para las salidas de colector abierto.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 22: MICROCONTROLADORES II EN C. TEMA 5

Módulo USART en CERRORS Indica al compilador que guarde los errores recibidos en la

variable RS232_ERRORS para restablecerlos cuando seproducen.

SAMPLE_EARLY No se puede utilizar con el USART interno. Provoca que elmuestreo del dato a través de la función GETC ( ) se realice alprincipio de un bit de tiempo.

RETURN= pin Para FLOAT_HIGH y MULTI_MASTER, este pin se usa para leerla señal de retorno. Por defecto, para FLOAT_HIGH es XMIT ypara MULTIMASTER es RCV.

MULTI_MASTER Usa el pin de RETURN para determinar si otro master en el busestá transmitiendo al mismo tiempo. Si se detecta una colisión,el bit 6 se pone a 1 en RS232_ERRORS y todos los posiblesPUTC ( ) son ignorados hasta que el bit 6 esté a 0. La señal escomprobada al final y al principio de cada bit de tiempo. No sepuede utilizar con USART interno.

LONG_DATA Permite manejar INT16 a las funciones GETC ( ) y PUTC ( ). Enformatos de datos de 9 bits.

DISABLE_INTS Provoca la deshabilitación de interrupciones cuando se ejecutaGETC ( ) y PUTC ( ) evitando distorsiones en los datos.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 23: MICROCONTROLADORES II EN C. TEMA 5

Módulo USART en C

STOP= x Número de bits de stop (por defecto 1)

TIMEOUT= x Para establecer el tiempo que GETC ( ) esperaun carácter (en ms). Si no se recibe carácter eneste tiempo, el RS232_ERRORS se pone a 0.

SYNC_SLAVE Provoca una línea RS232 en modo esclavosíncrono, haciendo el pin de recepción comoentrada de reloj y la de transmisión comoentrada/salida de datos.

SYNC_MASTER Provoca una línea RS232 en modo maestrosíncrono, haciendo el pin de recepción comosalida de reloj y la de transmisión comoentrada/salida de datos.

UART1 Configura el XMIT y RCV para el USART1

UART2 Configura el XMIT y RCV para el USART2Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 24: MICROCONTROLADORES II EN C. TEMA 5

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 USARTse 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;

Módulo USART en C

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 25: MICROCONTROLADORES II EN C. TEMA 5

Transmisión de datos:

putc (cdata)

putchar (cdata)

cdata es un carácter de 8 bits. Esta función envía uncarácter mediante el pin XMIT. La directiva #USE RS232debe situarse siempre antes de utilizar esta función.

puts (string)

string: cadena de caracteres constante o matriz decaracteres terminada con un 0. La funcióon puts ( )manda los caracteres de la cadena, uno a uno, a travésdel bus RS232 utilizando la función PUTC ( ); detrás de lacadena envía un RETURN (13) y un retorno de carro (10)

Módulo USART en C

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 26: MICROCONTROLADORES II EN C. TEMA 5

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 ( ), quepermite 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 esopcional y puede ser:

1-9 para especificar cuantos caracteres deben serespecificados;

01-09 para indicar la cantidad de ceros a la izquierda.1.1-9.9 para coma flotante.

Módulo USART en C

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 27: MICROCONTROLADORES II EN C. TEMA 5

Módulo USART en C

t puede indicar:c Carácters Cadena o carácteru Entero sin signod Entero con signoLu Entero sin signoLd Entero largo con signox Entero hexadecimal (minúscula)X Entero hexadecimal (mayúscula)Lx Entero largo hexadecimal (minúscula)LX Entero largo hexadecimal (mayúscula)f Flotante con truncadog Flotante con redondeoe Flotante en formato exponencialw Entero sin signo con decimales insertados. La 1ra cifra

indica el total, la 2da el número de decimales.Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 28: MICROCONTROLADORES II EN C. TEMA 5

Recepción de datos:

value= getc ( );

value= getch ( );

value= getchar ( );

value (valor) es un carácter de 8 bits. Espera recibir uncarácter por la línea RS232 y devuelve su valor. En losdispositivos con USART interno, se pueden almacenarhasta tres caracteres; para evitar esperas se puedeutilizar la función KBHIT ( ).

valor= kbhit ( );

valor es 0 (FALSE) si GETC ( ) debe esperar a que llegue uncarácter; 1 (TRUE) si ya hay un carácter listo para serleído por la función GETC ( ).

Módulo USART en C

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 29: MICROCONTROLADORES II EN C. TEMA 5

Ejemplo 1. Enviar los datos del 0 al 10, en modo asíncrono, entre dosPICS. 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 valorprintf(lcd_putc,"\fENVIANDO\n");printf(lcd_putc,"%1D",valor);delay_ms(2000);}

}}

Prof. Luis Zurita Microcontroladores IIProf. Luis Zurita Microcontroladores II

Page 30: MICROCONTROLADORES II EN C. TEMA 5

// PIC ESCLAVO#include <16F877.h>#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=0X05int valor;#int_RDARDA_isr() {valor=GETC();} //Recibe valorvoid 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á

Page 31: MICROCONTROLADORES II EN C. TEMA 5

Con el “Virtual Terminal”, presionando elbotón derecho del mouse y seleccionandoHex display mode, podemos visualizar losdatos que se están recibiendo.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 32: MICROCONTROLADORES II EN C. TEMA 5

La norma RS232

• Es la más básica de las comunicaciones serie. Comunica unequipo terminal de datos (DTE) con el equipo decomunicación de datos (DCE).

• Las características eléctricas de la señal en esta normaestablecen que la longitud máxima entre dos equipos nodebe ser superior a 15 metros, sin embargo, el autor harealizado pruebas de campo que permiten alcanzar los 30metros. 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ógicoentre -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

IUT Cumaná

Page 33: MICROCONTROLADORES II EN C. TEMA 5

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

La norma RS232

MAX232RX

RX

TX

TX

GND GND

NIVELES TTL NIVELES RS232

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 34: MICROCONTROLADORES II EN C. TEMA 5

Circuito integrado MAX232

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 35: MICROCONTROLADORES II EN C. TEMA 5

PIC

• En la actualidad, las computadoras desde el año 1996 han idoerradicando el puerto serie con el conector DB9 y DB25, por elpuerto USB (Universal Serial Port).

• Una solución ha sido la implementación de cables deconversión USB-232.

• Sin embargo, los microcontroladores de la familia PIC18,integran un módulo USB para comunicaciones como protocolode comunicación.

MóduloUSART

PIC

MóduloUSB

ConvertidorUSB-232

Familia PIC18Familia PIC16F87XProf. Luis Zurita Microcontroladores II

IUT Cumaná

Page 36: MICROCONTROLADORES II EN C. TEMA 5

• La selección de las órdenes se realiza mediante unteclado y se visualizan en una pantalla LCD en elMaestro.

• Si se presiona 1, el Maestro envía el dato: 17H, elesclavo activa el led Rojo y muestra en una pantallaLCD: ORDEN1.

• Si se presiona 4, el Maestro envía el dato: 2DH, elesclavo activa el led amarillo y muestra en unapantalla LCD: ORDEN2.

• Si se presiona 7 el Maestro envía el dato: 64H, elesclavo activa el led verde y muestra en una pantallaLCD: ORDEN3.

• Si se presiona cualquier otra tecla, el Maestro envíael dato: C2H, el esclavo desactiva todos los leds ymuestra en una pantalla LCD: TODOS OFF.

Ejemplo 2. Realizar un sistema Maestro-Esclavo multi-selector.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 37: MICROCONTROLADORES II EN C. TEMA 5

#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOLVP#use delay (CLOCK = 4000000)

#use rs232(baud=9600, xmit=pin_c6,

rcv=pin_c7)#define use_portb_kbd TRUE

#define use_portd_lcd TRUE

#include <lcd.c>#include <kbd.c>

void main() {char k;

int x;

int valor;lcd_init();

kbd_init();

port_b_pullups(TRUE);printf(lcd_putc,"\fPRESIONE FUNCION");

OUTPUT_C(0x00);

while (TRUE) {k=kbd_getc();

x=k-48;

if (k!=0) {

if (x==1){valor=0x17;

PUTC(valor);

printf(lcd_putc,"\fORDEN 1");}else if (x==4)

{valor=0x2D;

PUTC(valor);printf(lcd_putc,"\fORDEN 2");}

else if (x==7)

{valor=0x64;PUTC(valor);

printf(lcd_putc,"\fORDEN 3");}

else{valor=0xC2;

PUTC(valor);

printf(lcd_putc,"\fTODOS OFF");delay_ms(1000);}

}

}}

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Programa del Maestro:

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 38: MICROCONTROLADORES II EN C. TEMA 5

#include <16f877.h>#fuses XT,NOWDT#use delay(CLOCK=4000000)#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7,

bits=8)#define use_portd_lcd TRUE#include <lcd.c>int valor;

#int_RDARDA_isr(void){valor=GETC();}

void main() {set_tris_c(0x80);lcd_init();enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);

while (TRUE) {if (valor==0x17)

{printf(lcd_putc,"\fORDEN 1");output_high (PIN_C0);output_low (PIN_C1);output_low (PIN_C2);

delay_ms(50);}else if (valor==0x2D){printf(lcd_putc,"\fORDEN 2");output_low (PIN_C0);output_high (PIN_C1);output_low (PIN_C2);delay_ms(50);}else if (valor==0X64){printf(lcd_putc,"\fORDEN 3");output_low (PIN_C0);output_low (PIN_C1);output_high (PIN_C2);delay_ms(50);}else if (valor==0XC2){printf(lcd_putc,"\fTODOS OFF");output_low (PIN_C0);output_low (PIN_C1);output_low (PIN_C2);delay_ms(50);}else{}

}}

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Programa del Esclavo:

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 39: MICROCONTROLADORES II EN C. TEMA 5

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Simulación del Programa:

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 40: MICROCONTROLADORES II EN C. TEMA 5

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Simulación del Programa:

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 41: MICROCONTROLADORES II EN C. TEMA 5

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Simulación del Programa:

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 42: MICROCONTROLADORES II EN C. TEMA 5

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Simulación del Programa:

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 43: MICROCONTROLADORES II EN C. TEMA 5

PROGRAMA DEL PIC MAESTRO:#include <16F877A.h>#device ADC=10#FUSES XT,NOWDT,NOPROTECT,NOLVP#use standard_io(c)#use delay(clock=4000000)#use rs232(baud=9600, xmit=pin_c6,

rcv=pin_c7, bits=8, parity=N)#BYTE TRISA=0X85#BYTE PORTA=0X05

void main() {int16 valor;int p;

setup_adc_ports(AN0);setup_adc(ADC_CLOCK_INTERNAL);

for (;;) {set_adc_channel(0); // Conversión//de la señal del potenciómetrodelay_ms(10); // Espera el TADQvalor = read_adc(); // Lee el valor

de //la conversiónp=valor*0.098; // Factor escalar

//para pasar de 0-1023 a 0-100putc(p);delay_ms(200); //Tiempo de

//muestreo}

}

Ejemplo 3. Realizar una conversión A/D de una señal proveniente deun potenciómetro en un PIC16F877, y enviarlo al puerto serie de unacomputadora. Visualizar los datos en LABVIEW (Opcional), además depoder controlar el puerto B de un PIC16F873 desde la computadora.

Prof. Luis Zurita Microcontroladores II

Page 44: MICROCONTROLADORES II EN C. TEMA 5

PROGRAMA DEL PIC ESCLAVO:#include <16F873A.h>#FUSES XT,NOWDT,NOPROTECT,NOLVP

#use standard_io(c)#use fast_io(b)#use delay(clock=4000000)#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();}

void main() {set_tris_b(0x00);enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);

while (1){output_b(valor);}

}

Ejemplo 3. Realizar una conversión A/D de una señal proveniente deun potenciómetro en un PIC16F877, y enviarlo al puerto serie de unacomputadora. Visualizar los datos en LABVIEW (Opcional), además depoder controlar el puerto B de un PIC16F873 desde la computadora.

Prof. Luis Zurita Microcontroladores II

Page 45: MICROCONTROLADORES II EN C. TEMA 5

Información obtenida en LABVIEW

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 46: MICROCONTROLADORES II EN C. TEMA 5

Información obtenida en LABVIEW

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 47: MICROCONTROLADORES II EN C. TEMA 5

Puerto Serie en PROTEUS

• El ISIS del PROTEUS proporciona un componente quepermite la simulación a través del puerto serie:COMPIM.

• Utilizando este componente no se necesita colocar unMAX232 para la simulación, debido a que el propiocomponente gestiona la comunicación con el puerto dela computadora.

• Podemos entonces comunicarnos con nuestra propiacomputadora. Si se tiene 2 puertos serie o 1 serie yvarios USB, con su respectivo cable convertidor, y asímanejar los datos que provienen del PIC con diferentesprogramas de aplicación como Visual C, LABVIEW, entreotros.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 48: MICROCONTROLADORES II EN C. TEMA 5

ERROR

TXD3

RXD2

CTS8

RTS7

DSR6

DTR4

DCD1

RI9

P1

COMPIM

Puerto Serie en PROTEUS

La configuración del puerto se realiza como cualquier otro componentey se pueden cambiar virtualmente todas las propiedades de un puertoserie: número de puerto, velocidad, paridad, número de bits, entreotros.Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 49: MICROCONTROLADORES II EN C. TEMA 5

Para este ejercicio, se envían los datos del PIC al COMPIM 1. Para simular que losdatos se reciben en otro puerto (la computadora), se utiliza otro simuladorde 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();

Ejemplo 4. Realizar una conversión A/D de una señal proveniente deun potenciómetro y enviarlo al puerto serie de una computadora.

Prof. Luis Zurita Microcontroladores II

Page 50: MICROCONTROLADORES II EN C. TEMA 5

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 =%LU\n",valor);

printf(lcd_putc,"\VOLTAJE = %01.2fV",p);

printf("ADC = %4ld ",valor); //Envío de información a la computadora

printf("VOLTAJE = %01.2fV\r", p); // El \r permite cambiar de línea.

delay_ms(100);

}

}

Ejemplo 4. Realizar una conversión A/D de una señal proveniente deun potenciómetro y enviarlo al puerto serie de una computadora.

Prof. Luis Zurita Microcontroladores II

Page 51: MICROCONTROLADORES II EN C. TEMA 5

Configuración del COMPIM

Prof. Luis Zurita Microcontroladores II

IUT Cumaná

Page 52: MICROCONTROLADORES II EN C. TEMA 5

Transmite

Recibe

En este ejemplo no se recibe nada,puesto que no se pudo conectar uncable USB entre dos puertos de lamisma computadora.

Prof. Luis Zurita Microcontroladores II

IUT Cumaná