Está en la página 1de 22

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU

FACULTAD DE CIENCIAS E INGENIERIA


SECCION ELECTRICIDAD Y ELECTRONICA

SESIN 03

COMUNICACION SERIAL

PARTE TERICA

DESCRIPCION DEL USART


REGISTROS DE CONFIGURACION

PARTE PRCTICA

TRANSMISON DE DATOS A LA PC
RECEPCION DE DATOS DEL MICROCONTROLADOR

Curso de Microcontroladores Atmega8 1


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

CIRCUITO DE COMUNICACIN SERIAL ASNCRONA Y SNCRONA.


(USART)

El USART es un dispositivo de comunicacin serial. Algunas de sus caractersticas ms importantes son:


Operacin full duplex (registros de transmisin y recepcin independientes).
Operacin sncrona y asncrona.
Generador de tasa de transmisin (Baud Rate) de alta resolucin.
Soporta tramas de 5, 6, 7, 8 o 9 bits de datos y 1 o 2 bits de parada.
Generador de paridad par o impar.
Deteccin de errores de paridad, de trama y de sobreescritura (overrun).
Modo de comunicacin multiprocesador.

La FIGURA 1 muestra un diagrama de bloques simplificado del mdulo USART.

FIGURA 1. Diagrama de Bloques del USART

Las lneas discontinuas separan las tres partes principales del USART: el Generador de reloj, el
Transmisor y el Receptor.

Curso de Microcontroladores Atmega8 2


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Descripcin de los Registros:

USART I/O data register:

Los registros USART Transmit Data Buffer y USART Receive Data Buffer comparten la misma
direccin en el espacio de E/S, la cual es llamada USART Data Register (UDR). El registro Transmit
Data Buffer (TXB) ser el registro de destino de cualquier dato que se escriba en el UDR. Leer el
UDR equivaldr a leer el contenido del registro Receive Data Buffer (RXB).
El buffer de transmisin slo puede ser escrito cuando la bandera UDRE del registro UCSRA est en
1. El dato que sea escrito cuando no se cumpla esta condicin ser ignorado. Cuando el transmisor est
habilitado cualquier dato que sea escrito en el buffer de transmisin pasar al registro Transmit Shift
Register en el momento en que est vaco, luego ser transmitido serialmente por el pin TxD.
El receptor est formado por una FIFO de dos niveles, su estado cambiar cada vez que se realice un
acceso al buffer de recepcin.

USART Control and Status Register A UCSRA:

Bit 7 RXC USART Receive Complete


Esta bandera se pondr en 1 cuando el registro de recepcin contenga un dato no ledo, y en 0
cuando el registro de recepcin est vaco (es decir el dato ya se ley). Si el receptor est
deshabilitado, el buffer de recepcin ser vaciado, y en consecuencia el bit RXC ser 0.

Bit 6 TXC: USART Transmit Complete


Esta bandera se pondr en 1 cuando una trama completa en el Transmit Shift Register haya sido
enviada por el pin TxD y no haya un nuevo dato presente en el buffer de transmisin (UDR). TXC
es puesto en 0 escribiendo un 1 en esta posicin.

Bit 5 UDRE: USART Data Register Empty


La bandera UDRE indica si el buffer de transmisin (UDR) est listo para recibir un dato. Si
UDRE est en 1, significa que el buffer est vaco y se puede recibir un nuevo dato. El bit UDRE
es puesto en 1 despus de salir del estado de reset, lo que indica que el transmisor est listo.

Bit 4 FE: Frame Error


Este bit se pone en 1 cuando el siguiente carcter en el buffer de recepcin indica un Frame Error
(es decir, cuando el primer bit de parada del siguiente carcter en el buffer de recepcin es cero).
Este bit es vlido hasta que el buffer de recepcin (UDR) es ledo. El bit FE es 0 cuando el bit de

Curso de Microcontroladores Atmega8 3


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
parada del dato recibido es 1. El bit FE se debe poner en 0 cuando se escriba en el registro
UCSRA.

Bit 3 DOR: Data OverRun


Este bit es puesto en 1 cuando se detecta una condicin de Data OverRun. Un error de Data
OverRun ocurre cuando el buffer de recepcin est lleno (2 caracteres), existe un nuevo
carcter esperando en el Receive Shift Register, y un nuevo dato es detectado. Este bit es vlido
hasta que el buffer de recepcin (UDR) es ledo. Este bit se debe poner en 0 cuando se escriba en
el registro UCSRA.

Bit 2 PE: Parity Error


Este bit es puesto a 1 cuando el siguiente carcter en el buffer de recepcin indica un error de
paridad y la verificacin de paridad est habilitada (PUM1=1). Este bit es vlido hasta que el
buffer de recepcin (UDR) es ledo. Este bit se debe poner en 0 cuando se escriba en el registro
UCSRA.

Bit 1 U2X: Double the USART transmission speed


Este bit slo afecta a la operacin asncrona. Se debe poner en 0 cuando se usa el modo sncrono.
Al poner este bit en 1 se reducir el divisor de tasa de transmisin de 16 a 8, doblando dicha tasa
durante la comunicacin asncrona.

Bit 0 MPCM: Multi-processor Communication Mode


Este bit habilita el modo de comunicacin multiprocesador. Cuando es puesto en 1, todas las
tramas recibidas que no contengan informacin de direcciones sern ignoradas.

USART Control and Status Register B UCSRB:

Bit 7 RXCIE: RX Complete Interrupt Enable


Poniendo este bit en 1 se habilita la interrupcin de recepcin completa. Una interrupcin USART
Receive Complete ser generada slo si el bit RXCIE es puesto en 1 y la bandera Global Interrupt
en SREG y el bit RXC en UCSRA estn en 1.

Bit 6 TXCIE: TX Complete Interrupt Enable


Poniendo este bit en 1 se habilita la interrupcin de transmisin completa. Una interrupcin
USART Transmit Complete ser generada slo si el bit TXCIE es puesto en 1 y la bandera Global
interrupt en SREG y el bit TXC en UCSRA estn en 1

Curso de Microcontroladores Atmega8 4


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Bit 5 UDRIE: USART Data Register Empty Interrupt Enable
Poniendo este bit en 1 se habilita la interrupcin de registro de datos vaco. Una interrupcin Data
Register Empty ser generada slo si el bit UDREI es puesto en 1 y la bandera Global Interrupt de
SREG y el bit UDRE en UCSRA estn en 1.

Bit 4 RXEN: Receiver Enable


Poniendo este bit en 1 se habilita el receptor del USART. El receptor anular la operacin normal
del pin RxD. Al deshabilitar el receptor, el buffer de recepcin se vaciar, invalidando las banderas
FE, DOR y PE.

Bit 3 TXEN: Transmitter Enable


Poniendo este bit en 1 se habilita el transmisor del USART. El transmisor anular la operacin
normal del pin TxD. La deshabilitacin el transmisor no tendr efecto hasta que la transmisin en
curso se complete (es decir, hasta que el Transmit Shift Register y el Transmit Buffer Register no
contengan datos a ser trasmitidos).

Bit 2 UCSZ2: Character Size


Este bit, combinado con el bit UCXZ1:0 en UCSRC, establece el nmero de bits de datos
(Character Size) de las tramas de transmisin y recepcin.

Bit 1 RXB8 Receive Data Bit 8


Este es el noveno bit de datos del carcter recibido cuando se trabaja con tramas de 9 bits. Debe
ser ledo antes de leer los bits menos significativos del UDR.

Bit 0 TXB8: Transmit Data Bit 8


Este es el noveno bit de datos del carcter a ser transmitido cuando se trabaja con tramas de 9 bits.
Debe ser enviado antes de enviar los bits menos significativos al UDR.

USART Control and Status Register C UCSRC:

El registro UCSRC comparte la misma direccin en el espacio de E/S que el registro UBRRH.

Bit 7 URSEL: Register Select


Este bit determina el acceso al registro UCSRC o al UBRRH. Tiene el valor 1 cuando se lee el
UCSRC. Debe ser puesto en 1 cuando se escriba en el registro UCSRC.

Bit 6 UMSEL: USART Mode Select


Determina el modo de operacin, sncrono o asncrono.
0: operacin asncrona
1: operacin sncrona

Bit 5:4 UPM1:0: Parity Mode


Estos bits establecen y determinan el tipo de generacin y verificacin de paridad. Si est
habilitado, el transmisor automticamente generar y enviar la paridad del dato transmitido dentro
de cada trama. El receptor generar un valor de paridad para el dato que llega y lo comparar con
el valor de UPM0; si estos valores no coinciden, la bandera PE en UCSRA ser puesta en 1.

Curso de Microcontroladores Atmega8 5


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
UPM1 UPM0 Modo de paridad
0 0 Deshabilitado
0 1 (Reservado)
1 0 Habilitado, paridad par
1 1 Habilitado, paridad impar

Bit 3 USBS: Stop Bit Select


Este bit determina el nmero de bits de parada que sern insertados por el transmisor.
0: 1 bit de parada
1: 2 bits de parada

Bit 2:1 UCSZ1:0: Character Size


Estos bits, combinados con el bit UCSZ2 en UCSRB, establece el nmero de bits de datos de las
tramas de transmisin y recepcin.

UCSZ2 UCSZ1 UCSZ0 Tamao de caracter


0 0 0 5 bits
0 0 1 6 bits
0 1 0 7 bits
0 1 1 8 bits
1 0 0 Reservado
1 0 1 Reservado
1 1 0 Reservado
1 1 1 9 bits

Bit 0 UCPOL: Clock Polarity


Este bit se usa slo en el modo sncrono. Se debe poner en 0 cuando se use el modo asncrono.

USART Baud Rate Registers UBRRL y UBRRHs

El registro UBRRH comparte la misma direccin en el espacio de E/S que el registro UCSRC.

Bit 15 URSEL: Register Select


Este bit determina el acceso al registro UBRRH o al UCSRC. Tiene el valor 0 cuando se lee el
UBRRH. Debe ser puesto en 0 cuando se escribe en el UBRRH.

Curso de Microcontroladores Atmega8 6


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Bit 14:12 Reserved Bits
Estos bits estn reservados para uso futuro. Por compatibilidad con dispositivos futuros, se deben
poner en 0 cuando se escribe en el registro UBRRH.

Bit 11:0 USART Baud Rate Register


Estos bits establecen la tasa de transmisin del USART. El registro UBRRH contiene los cuatro
bits ms significativos, y UBRRL los ocho menos significativos.

Ecuaciones para calcular la tasa de trasmisin.

BAUD: tasa de transmisin (en bits por segundo)


fosc : Frecuencia de reloj del sistema
UBRR: Contenido de los registros UBRRH y UBRRL

Curso de Microcontroladores Atmega8 7


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
PRACTICA N 3

COMUNICACIN SERIAL ASNCRONA

I. OBJETIVO
Aprender a utilizar el puerto de comunicacin serial asncrona del microcontrolador ATmega8,
como medio de comunicacin con un computador personal.

II. MATERIALES
1 mdulo de entrenamiento AvrPUCP -Mega8.
1 Mdulo de entrada/salida.
1 Cable de programacin
1 computadora personal.
Entorno de desarrollo VMLAB
Cables de conexin
Cable de comunicacin serial RS232

III: INTRODUCCION A LA COMUNICACIN SERIAL

3.1 Conceptos tericos:

La comunicacin serial es el proceso mediante el cual se enva uno o mas datos bit por bit, en
forma secuencial y usando un canal de comunicacin. En contraste, en la comunicacin paralela,
todos los bits de cada dato o smbolo son enviados juntos.

El estndar de comunicacin serial que se desarrollar en esta seccin ser el protocolo RS-232
asncrona, la cual esta presente en muchas computadoras personales ya que a pesar de su
antigedad y baja velocidad sigue siendo usada en muchos dispositivos de control, equipos de
medicin, lectores de cdigo de barras, etc. gracias a su bajo costo de implementacin y sencillo
protocolo.

Como todo protocolo de comunicacin, el protocolo RS232 tiene una trama caracterstica, la cual
esta conformada por seales de inicio y parada , as como deteccin de errores. La figura 3.1
muestra como esta conformada la trama.

BIT DE INICIO BIT DE PARADA

1
DATOS P
0

BIT DE PARIDAD
figura 3.1 Trama de comunicacin serial Asncrona del protocolo RS232

Bit de inicio (start): es un 0 lgico cuyo ancho esta dado por la velocidad de comunicacin.

Curso de Microcontroladores Atmega8 8


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Bit de parada (stop): es un 1 lgico cuyo ancho esta dado por la velocidad de
comunicacin. En los microcontroladores Atmel AVR pueden ser programados 1 2 bits de
parada.

Datos (data): es la informacin propiamente dicha que se desea enviar o recibir y que se
conoce ms como carcter. El BIT menos significativo de dato es el primero en ser enviado y
el ltimo es el BIT ms significativo. En los microcontroladores Atmel AVR la cantidad de
bits por cada dato (denominado bits por carcter), es programable, pudiendo ser: 5, 6, 7, 8 9
bits. Normalmente se usan 8 bits.

Bit de Paridad (parity): se usa para verificar la integridad del dato durante la comunicacin.
Puede ser de 1 0 (comunicacin sin paridad) bits de longitud. En el primer caso
(comunicacin con paridad), para los microcontroladores Atmel AVR, existen las siguiente
posibilidades:

o Par (even): cuando la suma de los bits en 1 lgico del dato y el bit de paridad es un
nmero par (puede ser 1 0)
o Impar (odd): cuando la suma de los bits en 1 lgico del dato y el bit de paridad es un
nmero impar (puede ser 1 0)
o Marca (mark): se usa en comunicaciones multi-procesadores para indicar que el dato
enviado es en realidad una direccin de esclavo (siempre es 1).
o Espacio (space): se usa en comunicaciones multi-procesadores para indicar que el dato
enviado es informacin para el esclavo previamente direccionado (siempre es 0).

Adems es necesaria tener claro los siguientes conceptos:

Bits por segundo (bps): es la unidad de medida de la velocidad de comunicacin. Expresa la


cantidad de bits que se transmiten por unidad de tiempo. Ejemplo: 2400 bps, 9600 bps, etc.

Baudios: es el nmero de variaciones por segundo que tiene la seal transmitida por algn
medio de comunicacin. NO necesariamente es igual a los bits por segundo transmitidos. Por
ejemplo, si se utilizaran 4 valores de voltaje diferentes para representar a un nmero de dos
bits y se quieren enviar 2000 bits de informacin en un segundo por un par de cables haciendo
variar el voltaje en el cable, las variaciones de voltaje ocurriran 1000 veces por segundo; es
decir, la velocidad de transmisin sera de 1000 baudios, sin embargo, cada valor de voltaje
representa a dos bits de informacin y por lo tanto la velocidad de transmisin de datos es
2000 bps.

IV. PROCEDIMIENTO

Ejemplo 1

Desarrolle un programa para el microcontrolador ATMEGA8 cada vez que se presione y suelte
un pulsador enve un carcter a una computadora personal haciendo uso de la comunicacin
serial asncrona.

Curso de Microcontroladores Atmega8 9


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Solucin

Se utilizar el entorno de desarrollo VMLAB


Comprobaremos el funcionamiento usando el simulador del VMLAB
Comprobaremos el funcionamiento usando el Hardware (mdulos).

Paso 1 Ejecutar el entorno VMLAB y crear un nuevo proyecto para el atmega8 con el nombre serial1

2do. Paso Preparacin del hardware del proyecto

En el archivo de trabajo SERIAL1.prj, Agregue los siguientes componentes:


modulo TTY de comunicacin serial RS-232
KEY (pulsador interactivo)
Resistencia

El modulo TTY es un componente interactivo basado en el protocolo RS-232. una vez colocado , este ser
mostrado en el Panel de Control del VMLab. Este modulo tiene una ventana para transmisin (TX
window) y otra para recepcin (RX window), tambin posee un botn de configuracin que permite
cambiar los parmetros en forma visual. Una vez conectado a nuestro proyecto mediante los nodos
TX/RX. Cualquier carcter recibido a travs del nodo RX ser mostrado en la ventada de recepcin.

El modulo TTY tiene los siguientes parmetros de configuracin:

1) X[<instName>] : nombre del mudulo que debe comenzar con X


2) baud_rate: velocidad de transmisin (300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400,

Curso de Microcontroladores Atmega8 10


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
57600, 76800, 115200)
3) n_bits: nmero de bits de datos (7 , 8) . Valor por defecto =7.
4) Parity: Paridad ( 0: Sin Paridad, 1: Con Paridad). Valor por defecto =0.
5) OddParity: Tipo de paridad ( 0: Par, 1: impar). Valor por defecto =0.
6) StopBits: nmero de bits de STOP (1, 2). Valor por defecto =1.
7) RxDisplayAs: Permite especificar el formato mostrado en la ventana de recepcin (1, 2, 3, 4) .
Valor por defecto =1.
8) Nodo de transmisin y Nodo de Recepcin

Entonces, para simular el programa Usart1 los parmetros del modulo TTY deben ser:

X1 TTY(4800 8 1 1 1 1) PD0 PD1

Para simular un Pulsador conectado al puerto B0 ser necesario usar uno de los SWITCH/KEY
interactivos (K0) y una resistencia (R0) conectada a tierra. Un circuito anti-rebote no es necesario en este
caso. As, los parmetros requeridos son:

R0 PB0 VSS 1K ; resistencia de 1K conectado a PB0 y a VSS


K0 VDD PB0 ; pulsador conectado a VDD y a PB0

3er Paso Edicin del programa

Tanto el transmisor como el receptor, deben poseer los mismo parmetros de comunicacin (baudios, bits
por carcter, etc.) antes de iniciar cualquier transmisin. Para ello se deben configurar los registros
necesarios en el microcontrolador para establecer la comunicacin serial asncrona as como el puerto PB0
para detectar los cambios de estado en el pulsador.

Curso de Microcontroladores Atmega8 11


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Inicio

Configurar USART:
4800, 8bits, paridad par,
1 bit de parada

Presion el
pulsador ?
NO

SI

Solto el
pulsador ? NO

SI

Buffer de
Tx libre ?
NO

SI

UDR ' V '

Diagrama de flujo del programa Usart1.asm

;*******************************************************
;* *
;* Laboratorio de Sistemas Digitales *
;* *
;* Programa que al presionar el pulsador conectado al *
;* pin PB0 enva serialmente el carcter 'V' usando *
;* el protocolo RS-232. La finalidad de este programa *
;* *
;* Autor: Laureano Rodrguez *
;* *
;*******************************************************

.include "C:\VMLAB\include\m8def.inc"

; Define here the variables


;
.def temp =r16

; Define here Reset and interrupt vectors, if any


;
reset:
rjmp inicio

inicio:
;********** Configuracin de parmetros ***********

Curso de Microcontroladores Atmega8 12


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

;4800 baudios (fosc= 1MHZ)


ldi R16,high($0C)
out UBRRH,R16
ldi R16,low($0C)
out UBRRL,R16

;velocidad simple, no multiprocesador


ldi R16,(0<<RXC | 0<<TXC | 0<<U2X | 0<<MPCM) ;TXC = RXC = U2X = MPCM = 0
out UCSRA,R16

;Comunicacin asncrona, paridad par, 1 bit de parada, 8 bits


ldi R16,(1<<URSEL | 0<<UMSEL | 1<<UPM1 | 0<<UPM0 | 0<<USBS | 1<<UCSZ1 | 1<<UCSZ0)
out UCSRC,R16

;interrupciones de comunicacin deshabilitadas, Tx y Rx habilitadas


ldi R16,(0<<RXCIE | 0<<TXCIE | 0<<UDRIE | 1<<RXEN | 1<<TXEN | 0<<UCSZ2 | 0<<TXB8)
out UCSRB,R16

;Espera presin y liberacin de pulsador


EsperaPulso:
sbis PINB,0
rjmp EsperaPulso
EsperaFinPulso:
sbic PINB,0
rjmp EsperaFinPulso

;Enva el carcter 'V'


ldi R16,'V'
EsperaTxLibre:
sbis UCSRA,UDRE
rjmp EsperaTxLibre
out UDR,R16
rjmp EsperaPulso

Cuarto Paso: ENSAMBLAJE Y DEPURACIN DEL PROGRAMA

Para ensamblar el programa presione la tecla F9 o haga doble clic en el icono build que se encuentra en
la barra de herramientas.

Si al momento de ensamblarlo no existe ningn error aparecer en la ventana de mensajes un smbolo


similar a una carita feliz, con mensajes como Succes! All ready to run, como en la siguiente figura
simplificada:

Figura No.7

Quinto paso. USO DEL SIMULADOR DEL ENTORNO VMLAB.

Luego de ensamblar el programa SERIAL1.HEX, se obtiene el cdigo mquina .


Podemos simular el funcionamiento del proyecto de 2 maneras:

1) Ejecutando el Programa paso a paso (instruccin por instruccin).


Se utiliza las teclas F6 F7 los botones del men (Step Over) (Step into)

2) Ejecutando todo el programa .

Curso de Microcontroladores Atmega8 13


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Se utiliza la tecla F5 los botones del men GO/Continue

Go (F5)

De la barra de herramientas

Del Menu
Figura No.4

Se puede observar el modulo TTY integrado al panel de control, luego de presionar y soltar el pulsador
virtual 0, se podr visualizar en la pantalla de recepcin el carcter enviado por el microcontrolador

Pulsador Virtual

Datos Transmitidos
Datos Recibidos

figura 5. Modulo TTY

Nota: Los parmetros del modulo TTY pueden reconfigurarse con la opcin Set Parameters

Sexto paso:

Luego de simular correctamente el programa , pasamos a la implementacin en hardware


Procedimiento:

Con ayuda de los puentes (jumpers) cortocircuitar los pines 2 y 3 en JP4 y JP5 (ver figura
3). Esto para llevar los pines PD0 (Rx) y PD1 (Tx) al circuito integrado MAX232 (conversor
de niveles TTL RS232).
Bajar de Intranet el programa Serial1.asm y programar la Flash. Notar que el bloque de
comunicacin del Atmega8 se programa bajo los siguientes parmetros: 4800 baudios, 8 bits
de datos, paridad par y 1 bit de parada. La velocidad ser correcta slo si los fusibles estn
programados de la siguiente manera: CKSEL=0001, SUT=10 (avisar al Jefe de Prctica para
la verificacin).
Ejecutar el programa de comunicaciones Hyper Terminal y configurarlo con los siguientes
parmetros: 4800 baudios, 8 bits de dato, paridad par y 1 bit de parada. Ver figura 3 y 4
Presionar el pulsador 0 cada vez que se desea enviar la V al computador y ver en la pantalla
del Hyper Terminal lo recibido.

Curso de Microcontroladores Atmega8 14


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Ejercicio 1:
Desarrolle un programa con el nombre ECO que reciba un carcter va comunicacin serial y reenvie dicho
carcter usando los siguientes parmetros de comunicacin : 9600 bps, sin paridad, 7 bits de datos y 1 bit de
parada.

La solucion del problema tiene el siguiente diagrama de flujo:

inicio

Configurar
parmetros de
comunicacin

Recepcin
NO completa?

SI

Dato <-- Buffer de Rx

Buffer de Tx
NO libre?

SI

Buffer de Tx <-- Dato

Diagrama de flujo programa ECO.ASM

;********************************************************
;* *
;* *
;* Programa de Recepcin y Transmisin Serial Asncrona *
;* con el cual , un usuario podr enviar un caracter *
;* desde una computadora personal hacia el microcontro- *
;* lador y este lo enviar de regreso a la computadora *

Curso de Microcontroladores Atmega8 15


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
;* a manera de un eco. *
;* *
;* Autor: Laureano Rodrguez *
;********************************************************

.include "C:\VMLAB\include\m8def.inc"

;********************************************************
;La directiva DEF permite asignar un simbolo o nombre a
;un registro y puede ser usado en el resto del programa
;en este caso se define r20 como DATO

.def DATO=r20

;********************************************************
reset:
rjmp inicio
reti ; Addr $01
reti ; Addr $02
reti ; Addr $03
reti ; Addr $04
reti ; Addr $05
reti ; Addr $06 Use 'rjmp myVector'
reti ; Addr $07 to define a interrupt vector
reti ; Addr $08
reti ; Addr $09
reti ; Addr $0A
reti ; Addr $0B
reti ; Addr $0C
reti ; Addr $0D
reti ; Addr $0E
reti ; Addr $0F
reti ; Addr $10
reti ; Addr $11
reti ; Addr $12

inicio:

;9600 baudios (fosc= 1MHZ)


ldi R16,high($0C)
out UBRRH,R16
ldi R16,low($0C)
out UBRRL,R16

;velocidad DOBLE, no multiprocesador


ldi R16,(0<<RXC | 0<<TXC | 1<<U2X | 0<<MPCM) ; U2X = 1
out UCSRA,R16

;Comunicacin asncrona, sin paridad, 1 bit de parada, 7 bits de datos


ldi R16,(1<<URSEL | 0<<UMSEL | 0<<UPM1 | 0<<UPM0 | 0<<USBS | 1<<UCSZ1 | 1<<UCSZ0)
out UCSRC,R16

;interrupciones de comunicacin deshabilitadas, Tx y Rx habilitadas


ldi R16,(0<<RXCIE | 0<<TXCIE | 0<<UDRIE | 1<<RXEN | 1<<TXEN | 0<<UCSZ2 | 0<<TXB8)
out UCSRB,R16

;Espera la llegada de un dato


EsperaDato:
sbis UCSRA,RXC
rjmp EsperaDato
in DATO,UDR ;leo el dato recibido

EsperaTxLibre:
sbis UCSRA,UDRE
rjmp EsperaTxLibre
out UDR, DATO ; envo el dato al buffer de transmisin serial
rjmp EsperaDato

Simulacin en el VMLab

Agregue el componente TTY de comunicacin serial a su proyecto, este debe teenr los siguientes
parmetros: Velocidad 9600 Baudios, 7 bits de datos, sin paridad y 1 bit de stop.

Curso de Microcontroladores Atmega8 16


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
X1 TTY(9600 7) PD0 PD1

figura 6.

Durante la simulacin , posicione el cursor en la ventana de Transmisin y tipee normalmente, todo


caracter ser transmitido virtualmente al nodo TX.

Ejercicio 1:
Desarrolle un programa con el nombre Serial3 que enve una cadena de caracteres al presionar la tecla 1 en
la computadora y al presionar la tecla 2 enve los comando necesarios para hacer un cambio de lnea en el
hyperterminal.

Ejecutar el programa de comunicaciones Hyper Terminal y configurarlo con los siguientes parmetros:
4800 baudios, 8 bits de dato, sin paridad y 1 bit de parada

Curso de Microcontroladores Atmega8 17


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
Solucion:

A continuacin se muestra el diagrama de flujo del ejercicio planteado


Inicio

DATO<--(puntero)

Incrementa puntero

DATO
= 0?

Fin

ENVIA_DATO

Diagrama de flujo Sub-Rutina ENVIA_CADENA

Curso de Microcontroladores Atmega8 18


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Inicio

Inicializar puntero
de pila (SP)

CONFIG_USART

RECIBE_DATO

DATO
= 1? NO

SI

Cargar en Z la Direccin DATO


de inicio de la cadena = 2? NO

SI

ENVIA_CADENA
DATO $0A
(Cambio de lnea)

ENVIA_DATO

DATO $0D
(Retorno a primera col)

ENVIA_DATO

Diagrama de flujo programa SERIAL3

Curso de Microcontroladores Atmega8 19


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
;********************************************************
;* *
;* *
;* Programa de Recepcin y Transmisin Serial Asncrona *
;* el usuario tiene la opcin de enviar una cadena de *
;* caracteres al presionar la tecla 1 y de cambiar de *
;* lnea al presionar la tecla 2 *
;* *
;* Autor: Laureano Rodrguez *
;********************************************************

.include "C:\VMLAB\include\m8def.inc"

.def dato =r20 ; Registro usado para el envo y recepcin de datos

reset:
rjmp start
reti ; Addr $01
reti ; Addr $02
reti ; Addr $03
reti ; Addr $04
reti ; Addr $05
reti ; Addr $06 Use 'rjmp myVector'
reti ; Addr $07 to define a interrupt vector
reti ; Addr $08
reti ; Addr $09
reti ; Addr $0A
reti ; Addr $0B This is just an example
reti ; Addr $0C Not all MCUs have the same
reti ; Addr $0D number of interrupt vectors
reti ; Addr $0E
reti ; Addr $0F
reti ; Addr $10
reti ; Addr $11
reti ; Addr $12

; Program starts here after Reset


;
start:
ldi r16,high(RAMEND) ;Stack Pointer al final de la RAM
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
rcall CONFIG_USART ;rutina que configura los parmetros del USART

LAZO:
rcall RECIBE_DATO ;rutina que lee el dato recibido
cpi DATO,'1' ; DATO es $31 ('1') ?
breq ES_1 ; si, salta
cpi DATO,'2' ; DATO es $32 ('2') ?
breq ES_2 ; si, salta
rjmp LAZO ; los demas caracteres son ignorados

ES_1:
ldi ZH,high(Mensaje*2) ;Carga en el putero Z la direccion de inicio del
mensaje
ldi ZL,low(Mensaje*2)
rcall ENVIA_CADENA ;rutina que envia el mensaje por el USART
rjmp LAZO
ES_2:
ldi DATO,0x0A ;Comando Cambio de linea
rcall ENVIA_DATO
ldi DATO,0x0D
rcall ENVIA_DATO ;Comando Retorno a primera columna
rjmp LAZO

;/////////////////////////////////////////////

CONFIG_USART:
; 8 bits , sin paridad y 1 bit de STOP
; 4800
push r16 ;salvamos el valor del registro r16

;Velocidad de 4800 baudios (doble velocidad).


ldi r16,high(25)
out ubrrh,r16
ldi r16,low(25)
out ubrrl,r16

Curso de Microcontroladores Atmega8 20


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

;Trabajamos a doble velocidad y sin modo multiprocesador, adems se limpian las banderas de
Recepcin y transmisin.
ldi r16,(0<<RXC | 0<<TXC | 1<<U2X | 0<<MPCM)
out ucsra,r16

;Se habilita la Recepcion y Transmision , y se desabilita la recepcion de mas de 8 bits de datos


ldi r16,(1<<RXEN | 1<<TXEN | 0<<UCSZ2)
out ucsrb,r16

;Comunicacin asncrona, 8 bits de datos, sin paridad y con 1 bit de parada.


ldi r16,(1<<URSEL | 0<<UMSEL | 0<<UPM1 | 0<<UPM0 | 0<<USBS | 1<<UCSZ1 |
1<<UCSZ0)
out ucsrc,r16
pop r16
ret

;****************************************************************************

;////////////////////////////////////////////
ENVIA_DATO:
; Esta rutina envia el byte del registro DATO (r20) al registro UDR del USART
sbis UCSRA,UDRE
rjmp ENVIA_DATO ; Espera a que UDR este libre
out UDR,DATO
RET
;////////////////////////////////////////////
RECIBE_DATO:
; Esta rutina lee el byte del registro UDR y guarde en registro DATO (r20)
sbis UCSRA,RXC
rjmp RECIBE_DATO ; espero a que la recepcin sea completada
in DATO,UDR
RET

;/////////////////////////////////////////////
ENVIA_CADENA:
; esta funcion envia una cadena que es apuntada por Z
; Dicha cadena debe terminar en 0 (cero)
lpm DATO,Z+
cpi DATO,0
breq finCADENA
rcall ENVIA_DATO
rjmp ENVIA_CADENA
finCADENA:
ret
;///////////////////////////////////////////////

;***********************************************
Mensaje:
.db "Pontificia Universidad Catolica del Peru",0 ; esta cadena termina en 0

Simulacin:

El modulo TTY tiene estos parmetros: Velocidad 4800 Baudios, 8 bits de datos, sin paridad y 1 bit de
stop.
X1 TTY(4800 8) PD0 PD1

En la figura puede verse las teclas pulsadas y los la cadena enviada por el microcontrolador. Note que los
comandos CR (retorno a primera columna) y LF (cambio de lnea) se muestran en la pantalla del simulador

Curso de Microcontroladores Atmega8 21


PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

figura 7

Material de trabajo elaborado por:


Laureano Rodrguez Polo
Diciembre de 2006

Curso de Microcontroladores Atmega8 22

También podría gustarte