Está en la página 1de 11

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 60

MICROCONTROLADORES

CURSO DE MICROCONTROLADORES PIC16F87X (...y XII)


Fernando Remiro Domnguez Profesor de Sistemas Electrnicos IES. Juan de la Cierva www.terra.es/personal/fremiro

RESISTOR

60

UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER (USART) El mdulo transmisor (USART) es otro de los dos puertos serie de los que dispone esta familia de microcontroladores. Los mdulos de I/O. (USART tambin se conocen como Serial Communications o Interface o SCI). El USART puede configurarse

como asncrono full dplex que puede comunicar con los dispositivos perifricos como el terminales de CRT y los ordenadores personales, o puede configurarse como un sistema sncrono half duplex que puede comunicar con otros microcontroladores, con dispositivos perifricos como A/D o D/A circuitos integrados, EEPROMs serie etc. El USART puede configurarse en los modos siguientes:

q Asncrono( q

Full duplex ) Sncrono-Master (half duplex) q Sncrono-Slave (half duplex) Poniendo a "1" el bit SPEN (RCSTA <7>), y los bits TRISC <7:6> (RC7 se configura como entrada y RC6 como salida), se configura RC6/TX/CK y RC7 /RX/DT como USART. En modo sncrono se utilizan formatos estndar: un bit de Start y ocho bits o nueve bits de datos y un bit de Stop, siendo el ms comn el de ocho bits de datos.

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 61

Registro de Estado y Transmisin TXTA (direccin 98h)


R/W-0 R/W-0 CSRC TX9 Bit 7 bit 7: R/W-0 TXEN R/W-0 U-0 SYNC ---R/W-0 BRGH R/W-0 R/W-0 TRMT TX9D Bit 0

Registro de Estado y Control de recepcin RCSTA (Direccin 18h)


R/W-0 SPEN Bit 7 bit 7: R/W-0 RX9 R/W-0 R/W-0 R/W-0 R/W-0 SREN CREN ADDEN FERR R/W-0 OERR R/W-0 RX9D Bit 0

bit 6:

bit 5:

CSRC: Bit de seleccin de fuente del reloj Modo Asncrono Sin importancia Modo Sncrono 1 = Modo master (reloj generado internamente para BRG (Generador de Baudios)) 0 = Modo esclavo (fuente de reloj externa) TX9: Habilita transmisin de 9-8 bits 1 = Selecciona la transmisin de 9 bits 0 = Selecciona la transmisin de 8 bits TXEN: Bit de habilitacin del transmisor 1 = Habilita transmisin 0 = Deshabilita transmisin Nota: SREN/CREN anula TXEN en modo SYNC.

bit 4:

SYNC: Bit de seleccin del modo USART 1 = Modo Sncrono 0 = Modo Asncrono bit 3: Sin implementar: En lectura es'0' bit 2: BRGH: Bit de seleccin del rango de baudios alto Modo Asncrono 1 = Alta velocidad 0 = Baja velocidad Modo Sncrono No se usa este modo bit 1: TRMT: Bit de estado del registro de desplazamiento del transmisor (TSR) 1 = TSR vaco 0 = TSR lleno bit 0: TX9D: Noveno bit de datos de transmisin. Se puede emplear como bit de paridad.

GENERADOR DE BAUDIOS DEL USART (BRG). En el protocolo asncrono RS-232 la frecuencia en baudios a la que se realiza la transferencia se debe efectuar a un valor normalizado: 330, 600,1.200, 2400, 4800, 9600, 19.200, 38.400, etc. Para generar esta frecuencia, el USART dispone de un generador de frecuencia en Baudios, BRG, cuyo valor se controla por el contenido del registro SPBRG. Adems del valor X cargado en el

registro SPBRG. La frecuencia en baudios del generador depende del bit BRGH (TXSTA<1>). Si BRGH=0 se trabaja a baja velocidad y si BRGH=1 se trabaja a alta velocidad. Segn este bit se obtendr el valor de una constante K necesaria para determinar la frecuencia de funcionamiento. Este generador sirve tanto para el modo sncrono como el asncrono y

SPEN: Bit de habilitacin 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 recepcin de 9-8 bits 1 = Selecciona 9 bits de recepcin 0 = Selecciona 8 bits de recepcin bit 5: SREN: Bit de habilitacin de recepcin nica Modo asncrono Este modo no se usa Modo Sncrono master 1 = Habilita una recepcin nica 0 = Deshabilita una recepcin nica Este bit se borra despus de completar la recepcin Modo Sncrono esclavo En este modo no se usa bit 4: CREN: Bit de habilitacin de recepcin continua Modo Asncrono 1 = Habilita recepcin continua 0 = Deshabilita recepcin continua Modo Sncrono 1 = Habilita recepcin continua hasta que el bit CREN sea borrado (CREN anula SREN) 0 = Deshabilita la recepcin continua bit 3:ADDEN: Bit de direccin Modo Asncrono con 9 bits (RX9=1) 1= Activa la deteccin de direccin, activa la interrupcin y descarga el buffer de recepcin al activarse RSR<8> 0= Desactiva la deteccin de direccin, todos los bits son recibidos y el noveno bit puede utilizarse como bit de paridad. 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: RX9D: Noveno bit de datos de recepcin. Se puede emplear como bit de paridad consiste de un contador/divisor de frecuencia de 8 bits controlado por el registro SPBRG (99H). De tal manera que la frecuencia de transmisin se calcula de acuerdo a la siguiente tabla:

SYNC

BRGH=0(baja velocidad)

BRGH=1 (Alta Velocidad)


Baud rate = FOSC/16(X+1)) --

0 (Modo asncrono) Baud rate = FOSC/(64(X+1)) 1 (Modo Sncrono) Baud rate = FOSC/(4(X+1)) X = Valor en SPBRG (0 a 255)

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 62

BAUD RATES en Modo Asncrono (BRGH=0)


BAUD FOSC = 20MHz RATES KBAUD % SPBRG (K) ERROR Valor decimal KBAUD FOSC = 16MHz FOSC = 10MHz % SPBRG KBAUD % SPBRG ERROR Valor decimal ERROR Valor decimal 0.17 207 1.202 0.17 129 0.17 103 2.404 0.17 64 0.16 25 9.766 1.73 15 0.16 12 19.531 1.72 7 3.55 8 31.350 8.51 4 6.29 6 31.250 6.99 4 8.51 3 52.083 9.58 2 255 0.610 255 0 156.250 0 importancia para la mayora de las aplicaciones, no obstante, se puede realizar los clculos empleando el ndice (BRGH=1) y sustituyendo la constante 64 por 16 (ver la tabla) y comprobar si el error se reduce. Los datos que llegan a la patilla RC7/RX/DT se muestrean en tres instantes para detectar y determinar mejor si el nivel presente en la patilla RX est a nivel alto o bajo. Si el bit BRGH (TXSTA<2>) est a cero, el muestreo se realiza en el sptimo, octavo, y noveno flanco de bajada de x16 de reloj.

MICROCONTROLADORES

0.3 1.2 2.4 9.6 19.2 28.8 33.6 57.6 HIG LOW BAUD RATES (K) 0.3 1.2 2.4 9.6 19.2 28.8 33.6 57.6 HIG LOW

1.221 2.404 9.766 19.531 31.250 34.722 62.500 1.221 312.500

1.75 0.17 1.73 1.72 8.51 3.34 8.51 -

255 129 31 15 9 8 4 255 0

1.202 2.404 9.615 19.231 27.778 35.714 62.500 0.977 250.000

RESISTOR

62

FOSC = 4MHz KBAUD % PBRG ERROR Valor decimal 0.300 0 207 1.202 0.17 51 2.404 0.17 25 8.929 6.99 5 20.833 8.51 2 31.250 8.51 1 62.500 8.51 0 0.244 255 62.500 0

FOSC = 3.6864MHz KBAUD % SPBRG ERROR Valor decimal 0.3 1.2 2.4 9.6 19.3 28.8 57.6 0.225 57.6 0 0 0 0 0 0 0 0 0 0 191 47 23 5 2 1 0 255 0

BAUD RATES en Modo Asncrono (BRGH=1)


BAUD FOSC = 20MHz RATES KBAUD % SPBRG (K) ERROR Valor decimal 0.3 1.2 2.4 9.6 9.615 19.2 19.231 28.8 29.070 33.6 33.784 57.6 59.524 HIG 4.883 LOW 1250.000 0.16 0.16 0.94 0.55 3.34 129 64 42 36 20 255 0 FOSC = 16MHz FOSC = 10MHz % SPBRG KBAUD % SPBRG ERROR Valor decimal ERROR Valor decimal 2441 1.71 255 9.615 0.16 103 9.615 0.16 64 19.231 0.16 51 19.531 1.72 31 29.412 2.13 33 28.409 1.36 21 33.333 0.79 29 32.895 2.10 18 58.825 2.13 16 56.818 1.36 10 3.906 255 2.441 255 1000.000 0 625.000 0 KBAUD Si por el contrario, el bit BRGH est a uno, el muestreo tiene lugar en el tercer flanco de reloj precedido de la segunda subida de reloj y de la primera bajada de x4 de reloj.

Debido a que el divisor es de 8 bits, no se puede tener cualquier velocidad de transmisin deseada, ya que X se deber redondear al entero ms cercano. En las dos tablas anteriores se muestran algunos

valores de velocidad de transmisin (baud) estndar, el divisor necesario (X=SPBRG) bajo diferentes frecuencias Fosc y el error producido en porcentaje. Como puede apreciarse, el error no tiene ninguna

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 63

BAUD RATES (K)

FOSC = 4MHz KBAUD % PBRG ERROR Valor decimal 0.3 1.2 1.202 0.17 207 2.4 2.404 0.17 103 9.6 9.615 0.16 25 19.2 19.231 0.16 12 28.8 27.798 3.55 8 33.6 35.714 6.29 6 57.6 62.500 8.51 3 HIG 0.977 255 LOW 250.000 0

FOSC = 3.6864MHz KBAUD % SPBRG ERROR Valor decimal 1.2 2.4 9.6 19.2 28.8 32.9 57.6 0.9 230.4 0 0 0 0 0 2.04 0 0 0 191 95 23 11 7 6 3 255 0

Ejemplo: Clculo de la proporcin del error de velocidad de transmisin para las siguientes condiciones: FOSC = 16 MHZ Velocidad de transmisin deseada = 9600 baudios BRGH = 0 SYNC = 0 FOSC Velocidad de transmisin = (64* (X + 1)) 16.000.000 (64* (X + 1)) X = (25,042) = 25 16000000 = 9615 Velocidad de transmisin = (64* (X + 1)) 9600 = error = 9615 - 9600 9600 = 0,16%

bit START

1 bit

Dato

8 bit

bit Stop

Figura 1.- La palabra de transmisin va precedida de un bit de Start y termina con un bit de Stop EL USART EN MODO ASNCRONO Como ya se ha dicho, en este modo de comunicaciones se emplea una configuracin estndar de un bit de Start, ocho o nueve bits de datos, y un bit de Stop. Este modo de trabajo se detiene durante la funcin Sleep. Aunque el USART tiene funciones independientes para la transmisin y recepcin, los formatos de datos y de velocidad de transmisin es igual para los dos casos. El generador de baudios produce siempre las seales de reloj x16 x64 dependiendo de BRGH (TXSTA<2>) para el desplazamiento de los bits. El bit de paridad no est soportado por el hardware, pero se puede implementar por software empleando para ello el noveno bit de datos. La seleccin del modo asncrono se realiza poniendo a cero el bit SYNC (TXSTA<4>). El modulo asncrono del USART se consigue con la combinacin de importantes elementos: q El generador de baudios q El circuito de muestreo q Transmisor asncrono q Receptor asncrono EL USART TRANSMISIN ASINCRONA Para realizar una transmisin de datos, el registro de desplazamiento TSR obtiene los datos del registro

(buffer) de lectura/escritura TXREG. El registro de desplazamiento TSR no carga el bit de Stop hasta que se hayan transmitido los datos cargados. Una vez que se haya enviado este bit, el registro ser cargado con los nuevos datos (si estn disponibles), en este caso el bit TXIF (PIR1 <4>) se pone a uno, y se genera una interrupcin si est habilitada (PIE1 <4>). Los pasos necesarios para realizar una transmisin asncrona son los siguientes: qInicializar el registro SPBRG con el valor apropiado segn los clculos realizados. Si se desea el margen alto se pondr a uno el bit BRGH. qHabilitar el puerto asncrono borrando el bit SYN y poniendo a uno el SPEN. qHabilitar la interrupcin (si se desea) poniendo a uno el bit TXIE. qPoner a cero o a uno el bit TX9 (8 9 bits). qHabilitar la transmisin poniendo a uno el bit TXEN, el cual pondr a uno el bit TXIF. qSi se han seleccionado 9 bits se deben poner el noveno en el bit TX9D. qCargar el dato en el registro TXREG (comenzar la transmisin).

RESISTOR

63

Registros asociados al Generador de Baud Rate


Direccin Nombre 98h TXSTA 18h RCSTA 99h SPGBRG Leyenda x = desconocido Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 CSRC TX9 TXEN SYNC --BRGH SPEN RX9 SREN CREN ADDEN FERR Registro generador de Baud Rate u= sin cambios - = Sin implementar, se lee "0" Bit 1 Bit 0 TRMT TX9D OERR RX9D Valor en POR,BOR 0000 010 0000 000X Valor en el resto de Reset 0000 010 0000 000X

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 64

Bus de Datos TXIF MSB (8) Registro TSR Interrupcin TXEN CLK Rango de Baudios TRMT SPEN SPBRG TX9 Generador de Baudios TX9D Registro TXREG 8 LSB (0) Pin del Buffer y Control RC6/TX/CX pin

TXIE

MICROCONTROLADORES

Figura 2.- Diagrama de bloques del mdulo USART configurado como transmisor

Figura 3

TRANSMISIN ASNCRONA
Palabra 1

Escritura en TXREG Salida BRG (Reloj desplaz.) Pin RC6/TX/CX

Bit de Start

Bit 0

Bit 1 PALABRA 1

Bit 7/8

Bit Stop

Bit TXIF (Flag de Buffer vacio) Palabra 1 Transmite Reg. de desplazamiento

Bit TRMT (Flag reg. desplazamiento vaco)

RESISTOR

64

Figura 4
Escritura en TXREG Salida BRG (Reloj desplazamiento) Pin RC6/TX/CK Bit TXIF (flag reg.Interrupcin) Palabra1

TRANSMISIN ASINCRONA CONTINUA


Palabra2

Bit Start

Bit 0

Bit 1 PALABRA1

Bit 7/8

Bit Stop

Bit Start

Bit 0

PALABRA 2

bit TRMT (flag regi.desplazamiento)

PALABRA1 Transmite Reg. desplazamiento

PALABRA2 Transmite Reg. desplazamiento

Nota.- Este diagrama muestra dos transmisiones consecutivas

EL USART EN MODO RECEPCIN ASNCRONA` En el modo de recepcin, los datos son recibidos por la patilla RC7/RX/DT y se introducen en serie en el registro RSR; despus de recibir el bit de Stop los datos acumulados en este registro se cargan en el de datos RCREG (si est vaco). Cuando la transferencia se ha completado, el bit RCIF (PIR1 <5>) pone a uno. La interrupcin puede habilitarse o deshabilitarse colocando a uno o a cero, respectivamente, el bit RCIE (PIE1 <5>). El bit RCIF se borra cuando el registro RCREG se ha ledo (se "vaca" el registro). Para configurar el puerto como receptor hay que seguir los siguientes pasos:

qInicializar

el registro SPBRG con el valor apropiado segn los clculos realizados. Si se desea el margen alto se pondr a uno el bit BRGH. qHabilitar el puerto asncrono borrando el bit SYN y poniendo a uno el SPEN. qHabilitar la interrupcin (si se desea) poniendo a uno el bit RCIE. qPoner a uno el bit RX9 para habilitar 9 bits de recepcin. qHabilitar la recepcin poniendo a uno el bit CREN. qEl flag RCIF subir a uno cuando se complete la recepcin. qSe ocasionar una interrupcin si est habilitado el bit RCIE. qLeer el registro RCSTA, cargar el no-

veno bit (si est habilitado) y comprobar si ha ocurrido un error durante la recepcin. qLeer el octavo bit recibido y dar lectura al registro RCREG para conocer si el dispositivo se ha direccionado. qSi ha ocurrido un error borrarlo poniendo a cero el bit CREN. Si el dispositivo ha sido direccionado, borrar el bit ADDEN para permitir que los datos puedan leerse del buffer receptor MODO SNCRONO Este modo de trabajo tiene dos posibles formas de configuracin, como master y como esclavo. En el modo master la transmisin y recepcin no

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 65

REGISTROS ASOCIADOS A LA TRANSMISIN ASINCRONA


Direccin 0Bh, 8Bh 10Bh,18Bh 0Ch 18h 19h 8Ch 98h 99h Nombre INTCON PIR1 RCSTA TXREG PIE1 TXSTA SPGBRG Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR 0000 000x 0000 0000 0000 -00X 0000 0000 0000 0000 0000 010 Valor en el resto de Reset 0000 000u 0000 0000 0000 000X 0000 0000 0000 0000 0000 010 GIE PEIE PSPIF(1) ADIF SPEN RX9 PSPIE CSRC T0IE INTE RBIE T0IF RCIF TXIF SSPIF CCP1IF SREN CREN -FERR Registro Transmisor USAR ADIE RCIE TXIE SSPIE CCP1IE TX9 TXEN SYNC --BRGH Registro generador de Baud Rate INTF RBIF TMREIF TMR1IF OERR RX9D TMR2IE TMR1IE TRMT TX9D

REGISTROS ASOCIADOS A LA RECEPCIN ASINCRONA


Direccin 0Bh, 8Bh 10Bh,18Bh 0Ch 18h 1Ah 8Ch 98h 99h Nombre INTCON PIR1 RCSTA RCREG PIE1 TXSTA SPGBRG Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset 0000 000u 0000 0000 0000 000X 0000 0000 0000 0000 0000 010 GIE PEIE PSPIF(1) ADIF SPEN RX9 PSPIE CSRC ADIE TX9 T0IE INTE RBIE T0IF RCIF TXIF SSPIF CCP1IF SREN CREN ADDEN FERR Registro Receptor USAR RCIE TXIE SSPIE CCP1IE TXEN SYNC --BRGH Registro generador de Baud Rate CREN SPBRG
P64 o P16 Recuperacin de datos Msb

INTF RBIF 0000 000x TMREIF TMR1IF 0000 0000 OERR RX9D 0000 -00X 0000 0000 TMR2IE TMR1IE 0000 0000 TRMT TX9D 0000 010

OERR

FERR
LSb

Registro RSR

Stop (8) 7 1 0 Start

RC7/RX/DT

Patilla del buffer de control

Rx9 8

RESISTOR

65

SPEN
RX9 ADDEN RX9 ADDEN RSR<8> Habilita carga del buffer receptor 8

RX9D Registro RCREG Figura 5.- Diagrama de Bloques del Mdulo USART configurado en modo Receptor tienen lugar al mismo tiempo, cuando se transmite un dato, la recepcin es inhibida y viceversa. En la transmisin el registro de desplazamiento, TSR (Transmit Shift Register), obtiene los datos del registro de lectura/escritura TXREG, pero ste no se carga hasta que el ltimo bit de la anterior carga no haya sido transmitido; cuando esto suceda el TSR se vuelve a cargar con el nuevo dato del registro TXREG (si est disponible) ste se vaca y se genera una interrupcin (si est habilitada por el bit TXIE, PIE1<4>. La transmisin se habilita por
8 Bus de datos
qHabilitar

FIFO

Interrupcin

RCIF RCIE

el bit TXEN del registro TXSTA<5>, si se borra durante una transmisin, sta ser abortada y reseteado el transmisor. Para iniciar una transmisin es necesario seguir los siguientes pasos: qInicializar el registro SPBRG con el valor apropiado calculado. qHabilitar el puerto master asncrono colocando a uno los bits SYN, SPEN y CSRC. qSi se desea emplear la interrupcin, habilitarla poniendo a uno el bit TXIE. q Si se desea una transmisin de nueve bits, el noveno se cargar en el bit TX9.

la transmisin poniendo a uno el bit TXEN. qSi se ha habilitado la transmisin de 9 bits, el noveno se cargar en el registro TX9D. qLa transmisin se iniciar al cargar los datos en el registro TXREG. EL USART EN MODO MASTER SNCRONO Para seleccionar el modo receptor master hay que poner a uno el bit SREN (RCSTA<5> o habilitar el

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 66

RECEPCIN ASNCRONA CON DETECCIN DE DIRECCIN


RC7/RX/DT (pin) Carga RSR Bit8=0, Byte de datos Lectura Bit8=1, Byte de direccin PALABRA1 RCREG bit Start bit 0 bit 1 bit 8 bit Stop bit Start bit 0 bit 8 bit Stop

RCIF

Nota.- Este diagrama de tiempos muestra un byte de datosseguido de un byte de direccin. El byte de datos no se lee en el RCREG (buffer de reccin) porque ADDEN = 1

Figura 6.-Recepcin Asncrona con Direccin y Primer Byte Figura 7


RC7/RX/DT (pin) bit Start

RECEPCIN ASNCRONA CON DIRECCIN Y PRIMER BYTE


bit 0 bit 1 bit 8 bit Stop bit Start bit 0 bit 8 bit Stop

Carga RSR Bit 8 = 1. Byte de Direccin Lectura Bit8 = 0, Byte de Datos PALABRA1 RCREG

RCIF Nota.- Este diagrama muestra un byte direccin seguido por un byte de datos. El byte de datos no se lee eb RCREC (Buffer recptor) porque ADEN no se ha actualizado y todaba = 0

RESISTOR

66

CREN (RCSTA<4>). El dato es tomado de la patilla RC7/WDT por cada flanco de cada del reloj , si el bit SREN est a uno, slo se recibir una palabra, pero si se borra el bit CREN la recepcin ser continua. Despus del ltimo impulso de reloj, el dato recibido en el registro de desplazamiento RSR ser transferido al RCREG (si est vaco). Una vez haya terminado la recepcin se originar una interrupcin si sta est habilitada, RCIE (PIE1 <5>). Los pasos a seguir para iniciar la recepcin en modo master son las siguientes:

qInicializar

el registro SPBRG con el valor apropiado de baudios. qHabilitar el puerto master asncrono colocando a uno los bits SYN, SPEN y CSRC. qAsegurarse de que los bits CREN y SREN estn borrados. qSi se desea emplear la interrupcin habilitarla poniendo a uno el bit RCIE. qSi se desean nueve bits poner a uno el bit RX9. qSi slo se desea una recepcin nica, poner a uno el bit SREN; para recepcin continua poner a uno el bit CREN. qEl flag de interrupcin RCIF se pone

a uno cuando la recepcin haya finalizado si est habilitada por el bit RCIE. qLeer el registro RCSTA y cargar el noveno bit (si est habilitado) y comprobar si ha ocurrido un error durante la recepcin. qLeer el octavo bit recibido y dar lectura al registro RCREG. qSi ha ocurrido un error borrarlo poniendo a cero el bit CREN. MODO ESCLAVO SNCRONO Este modo de trabajo difiere del modo master, pues la seal de reloj de desplazamientos es proporcionada

Registros de Sincronizacin en modo master en transmisin


Direccin Nombre 0Bh, 8Bh, 108Bh,18Bh INTCON 0Ch PIR1 18h RCSTA 1Ah TXREG 8Ch PIE1 98h TXSTA 99h SPGBRG Leyenda x = desconocido Bit 7 GIE PSPIF(1 SPEN PSPIE CSRC Bit 6 PEIE ADIF RX9 ADIE TX9 Bit 5 T0IE RCIF SREN Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset 0000 000u 0000 0000 0000 000X 0000 0000 0000 0000 0000 010 INTE RBIE T0IF TXIF SSPIF CCP1IF CREN ADDEN FERR Registro Receptor USAR RCIE TXIE SSPIE CCP1IE TXEN SYNC --BRGH Registro generador de Baud Rate - = Sin implementar, se lee "0" INTF RBIF 0000 000x TMREIF TMR1IF 0000 0000 OERR RX9D 0000 000X 0000 0000 TMR2IE TMR1IE 0000 0000 TRMT TX9D 0000 010

u= sin cambios

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 67

Figura 8
RC7/RX/DT pin TC6/TX/CK pin Escritura en Reg. TXREG bit TXIF (Flag de Interrupcin) bit TRMT "1"

TRANSMISIN SINCRONA

Q1 Q2Q3 Q4 Q1Q2 Q3Q4 Q1Q2 Q3Q4 Q1Q2Q3Q4 Q1Q2 Q3Q4 Bit0 Bit 1 Palabra 1 Bit 2

Q3 Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2 Q3Q4Q1Q2Q3Q4Q1 Q2Q3Q4 Q1Q2Q3Q4 Bit 7 Bit0 Bit 1 Palabra 2 Bit 7

bit TXEN

"1"

Nota.- Modo master Sincrono; SPBRG="0". Transmisin Continua de 2 palagras de 8 bits


Figura 9
pin RC7/RX/DT Pin RC6/TX/CK Escritura en el reg. TXREG

TRANSMISIN ASINCRONA ( a traves del TXEN)


bit 0 bit 1 bit 2 bit 6 bit 7

bit TXIF

bit TRMT

bit TXEN

externamente por la patilla RC6/TX/CK en lugar de ser generada internamente, esto permite que se puedan transferir o recibir datos cuando el dispositivo est en el modo Sleep. Las operaciones de transmisin son idnticas al modo Master, excepto en el caso del modo Sleep. Si se escriben dos palabras en el registro TXREG y despus se ejecuta la instruccin Sleep, ocurrir lo siguiente: qLa primera palabra ser inmediatamente transferida al registro TSR y transmitida. qLa segunda palabra permanece en el registro TXREG. qEl bit TXIF no se pondr a uno. qCuando la primera palabra haya salido del registro TSR, la segunda pala-

bra, que permanece en el registro TXREG, se enva al TSR y el flag TXIF se pone a uno. qSi est habilitado el bit TXIF la interrupcin despierta al microcontrolador de modo Sleep y el programa saltar a la direccin del vector de interrupciones (0004 hex.). EJEMPLOS DE CONTROL DEL USAR CONECTADO AL PUERTO SERIE DEL ORDENADOR Para poder conectar las lneas del PIC16F87X que entrega niveles TTL con el puerto serie RS-232 que son compatibles, es necesario utilizar un circuito interface que traduzca los datos del microcontrolador al puerto serie del

ordenador y viceversa, nosotros hemos utilizado un MAX232, teniendo mucho cuidado para no equivocarnos con la polaridad de los condensadores. El circuito utilizado es el que se muestra en la Figura 10. Los lectores que lo deseen pueden ponerse en contacto con el autor de este curso en fremiro@teleline.es para solicitar las placas del entrenador de microcontroladores PIC de bajo costo que se ha diseado para el aprendizaje de estos microcontroladores. Adems del circuito, necesitaremos para comprobar el funcionamiento los estos ejemplos de comunicaciones, necesitamos un programa de comunicaciones como el HiperTerminal de Windows y un cable serie en conexin de MODEM nulo, que deber de conectarse tal y como se muestra en la Figura 11. EL HyperTerminal es un programa general de comunicaciones de Windows, que resulta vlido para conectarse con otros ordenadores o dispositivos. Hay programas de comunicaciones mucho ms potentes que ste. Sin embargo, HyperTerminal se caracteriza por su facilidad de uso y su fcil adquisicin ya que viene integrado dentro de Windows. Puede ocurrir que el programa HyperTerminal no est cargado,

RESISTOR

67

Registros de Sincronizacin en modo master en recepcin


Direccin Nombre 0Ch PIR1 18h RCSTA 1Ah RCGEG 8Ch PIE1 98h TXSTA 99h SPGBRG Leyenda x = desconocido Bit 7 Bit 6 PSPIF(1) ADIF SPEN RX9 PSPIE CSRC ADIE TX9 Bit 5 Bit 4 Bit 3 Bit 2 RCIF TXIF SSPIF CCP1IF SREN CREN ADDEN FERR Registro Receptor USAR RCIE TXIE SSPIE CCP1IE TXEN SYNC --BRGH Registro generador de Baud Rate - = Sin implementar, se lee "0" Bit 1 Bit 0 Valor en POR,BOR TMREIF TMR1IF 0000 0000 OERR RX9D 0000 000X 0000 0000 TMR2IE TMR1IE 0000 0000 TRMT TX9D 0000 010 Valor en el resto de Reset 0000 0000 0000 000X 0000 0000 0000 0000 0000 010

u= sin cambios

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 68

VCC

C4 1F

C5 1F 1 2 3 4 5 6 7 8

U1 C1+ V+ C1C2+ C2V7 8 MAX232 9 10 T1IN R10UT R1IN T1OUT GND VCC 9 10 11 12 13 14 15 16 C3

MICROCONTROLADORES

DB9

5 9 4 8 3 7 2 6 1

C6 1F

RC6 RC7 RXPC TXPC

RXPC TXPC C7 1F

10nF

Vcc= 5V
VCC

R10 300 R1 10K Reset R9 300 R2 100

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

PIC16F876
MCLR RA0 RA1 RA2 RA3 RA4 RA5 Vss RB7 RB6

R8 300 R7 300 R6 300 R5 300 RB5 RB4 RB3 RB2 RB1 RB0 Vcc=5V R4 300 R3 300

C1 27 pF

XT 4Mhz

OSC1 OSC2/CKOUT VDD VSS

C2 27 pF RC0 RC1 RC2 RC3 RC7 RC6 RC5 RC4

RESISTOR

68

Figura 10.- Circuito de aplicacin para comprobar el funcionamiento del USART del PIC16F876 y el puerto serie del ordenador.

Figura 13.- Conectar con... Figura 11.- Conexin del cable serie como MODEM nulo

para ello hay que seguir el mismo procedimiento que para cualquier otro programa de Windows, ejecutando en el siguiente orden: Panel de Control > Agregar o Quitar programas > Instalacin de Windows > Comunicaciones y activar la casilla correspondiente a HyperTerminal. Para ejecutar HyperTerminal hay que seguir los siguientes pasos: 1. Activar Inicio > Programas > Accesorios > Comunicaciones y selec-

Figura 12.-Hipertermina

Figura 14 HyperTerminal.

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 69

Figura 15 .-Hyperterminal. Pantalla de trabajo cionar HyperTerminal. Se advierte que no se trata de un programa, sino de una carpeta cuyo contenido es un nico programa denominada Hypertrm. Cada vez que se ejecuta el programa Hypertrm se le pide al usuario la informacin suficiente para crear en la carpeta HyperTerminal una nueva conexin, es decir, un lugar de destino con el que conectarse. 2. Ejecutar el programa Hypertrm para crear una nueva conexin, se le pregunta el nombre que asignar a la conexin, teclear por ejemplo "PIC16F876" y elegir un icono con el que se quiera representar la conexin, figura 12. 3.En la siguiente pantalla Conecta con elegir la opcin Conectar usando: Di-

Figura 16.- Hyperterminal. Ejemplos de conexiones configuradas conexin, para comenzar la comunicacin simplemente ha de ejecutar el icono de la conexin previamente configurada tal como se muestra en la figura 16. El programa monitor232.asm configura el USART para trabajar a 9.600 baudios, con un bit de Stop y sin bit de paridad, seguidamente se queda a la espera de recibir un dato por el puerto serie y cuando lo hace lo muestra en el PORTB. Por su parte el programa Transmite232.asm configura el USART para trabajar a 9.600 baudios, con un bit de Stop y sin bit de paridad, seguidamente transmite cada segundo la cadena de caracteres "HOLA" cada segundo que se reflejan en el HiperTerminal.

recto a Com2, figura 13. Se va a utilizar el puerto serie Com2 para comunicar el ordenador y el microcontrolador. Tambin se puede elegir el COM1. 4. Aparece una pantalla con las Propiedades de COM. Seleccionar las apropiadas para el sistema utilizado. Para nuestros ejemplos utilizamos las opciones que se muestran en la figura 14. 5. A continuacin aparece la pantalla de trabajo tal como la mostrada en la figura 15. Para conectar el ordenador y el microcontrolador a travs del puerto serie COM 2, basta con activar la opcin "Llama" (o icono de telfono colgado) y para desconectar hay que activar opcin "Desconecta" (o icono de telfono descolgado. Una vez configurada una

; ;********************************************************************************* ; PROGRAMA : monitor232.asm ; Este programa escucha el puerto serie rs232 sin usar las interrupciones y cuando recibe un byte lo muestra ;en PortB hasta que otro lo sobrescriba.Configuracin del puerto serie: 9600 baudios,8 bits,paridad = none ; ; Revisin : 1.0 Programa para : PIC16F876 ; CPU Clock : 4 MHz Reloj instruccin : 1 MHz = 1 _s ; WDT : Deshabilitado Tipo de reloj : XT ; Proteccin de Cdigo : OFF ;**********************************************************************************

LIST P=16F876 INCLUDE <P16f876.inc> CBLOCK 0x20 Buffer ENDC

;Se indica el modo de procesador ;se incluye la definicion de los

;Buffer entrante

;***************************** VECTOR DE RESET ************************************* ; ORG 0x00 ;Inicio en el Vector de Reset ; goto INICIO ;Va a la primera instruccin del ;programa ORG 0x05 ;Inicio en el Vector de Reset ;*****************************INICIO PROGRAMA PRINCIPAL ***************************** INICIO clrf PORTB ;Limpia salidas

MICROCONTROLADORES
RESISTOR

69

56-70 MICROCONTROLADORES2

17/6/04 13:16

Pgina 70

clrf bsf clrf movlw movwf movlw movwf movlw movwf bcf

PORTC STATUS,RP0 TRISB b'10011111' TRISC b'00000100' TXSTA .25 SPBRG STATUS,RP0

;del PORTB y del PORTC ;Selecciona el Banco1 ;Puerta B como salida ;RC7/Rx entrada, ;RC6/Tx salida y RC5 Salida. ;Configuracion USART ;y activacion de transmision ;9600 baudios ;Selecciona el Banco 0 Bucle movlw movwf movlw movwf bcf bsf bsf bsf bcf call movlw movwf bsf COMP_TX btfss goto bcf movlw movwf bsf COMP_TX_2 btfss goto bcf movlw movwf bsf COMP_TX_3 btfss goto bcf movlw movwf bsf COMP_TX_4 btfss goto bcf movlw movwf goto b'00100100' TXSTA .25 SPBRG STATUS,RP0 RCSTA,SPEN STATUS,RP0 TXSTA,TXEN STATUS,RP0 Delay 'H' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX STATUS,RP0 'O' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX_2 STATUS,RP0 'L' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX_3 STATUS,RP0 'A' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX_4 STATUS,RP0 '-' TXREG Bucle ;Configuracin USART ;y activacin de transmisin ;9600 baudios ;Selecciona el Banco 0 ;se activa la USART ;Selecciona el Banco 1 ;Habilita la transmisin ;Selecciona el Banco 0 ;Carcter ASCII ; ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII en decimal

bsf RCSTA,SPEN ;se activa la USART movlw b'10010000' ;Configuracion de la usart movwf RCSTA ;para recepcion continua ;------Bucle de comprobacion si llega dato mayor de 0 por puerto serie-----BUCLE movf RCREG,W ;Lectura dato recibido movwf Buffer ;Visualiza dato recibido movlw .0 ;comprueba que se reciba algo que subwf Buffer,W ;no sea cero... btfsc STATUS,C goto Mayordecero ;dato valido. goto BUCLE ;dato no valido.. es cero..vuelve. Mayordecero movf Buffer,W ;muestra el dato en portb movwf PORTB ;y lo deja ayi hasta que llegue otro goto BUCLE ;retorna a esperar otro dato valido ;***************************************************************************** ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la pgina 0 goto INICIO ;Salto a la direccin de INICIO del programa ;***************************************************************************** END ;*********************************************************************** ; PROGRAMA :Trans232.asm ;Este programa transmite los bytes ASCII "HOLA "por el puerte serie del microcontrolador ; a intervalos de 1 segundo. ; Configuracin del piuerto serie COM: 9600 baudios,8 bits,paridad = none ; ; Revision : 1.0 Programa para : PIC16F876 ; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us ; WDT : Deshabilitado Tipo de reloj : XT ; Proteccin de Cdigo : OFF ;************************************************************************ LIST P=16F876 ;Se indica el modo de procesador ;se incluye la definicion de los

INCLUDE<P16f876.inc> CBLOCK 0x20 ContadorA ContadorB ContadorC

ENDC ;************************************ VECTOR DE RESET ********************* ; ORG 0x00 ; goto INICIO ;Va a la primera instruccion del programa ORG 0x05

;**************************SUBRUTINAS ********************* ;Delay = 1,0000020 s with Osc = 4 MHz Delay movlw D'6' movwf ContadorC movlw D'24' movwf ContadorB movlw D'168' movwf ContadorA loop decfsz ContadorA,F goto loop decfsz ContadorB,F goto loop decfsz ContadorC,F goto loop return ;*********************************************************** ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la pgina 0 goto INICIO ;Salto a la direccin de INICIO del programa ;********************************************************** END

;*******************************INICIO PROGRAMA PRINCIPAL **************** INICIO clrf PORTB ;Limpia PORTB y PORTC clrf PORTC bsf clrf movlw movwf STATUS,RP0 TRISB b'10111111' TRISC ;Selecciona el Banco 1 ;Puerta B como salida ;RC7/Rx entrada, ;RC6/Tx salida.

También podría gustarte