Vous êtes sur la page 1sur 4

FACULTAD DE INGENIERÍA ELÉCTRICA Y

ELECTRÓNICA
Carrera de Ingeniería Electrónica y Control
Carrera de Ingeniería Electrónica y Telecomunicaciones
Carrera de Ingeniería Electrónica y Redes de Información
Carrera de Ingeniería Eléctrica

LABORATORIO DE SISTEMAS MICROPROCESADOS

PRÁCTICA N°6
1. TEMA :
PROGRAMACIÓN DE LOS MICROCONTROLADORES ATMEL
2. OBJETIVO:

Familiarizar al estudiante con el uso de programadores para los microcontroladores Atmel.

Implementar un circuito que permita dividir dos números de 8 bits, con el microcontrolador
ATmega164p.

3. MARCO TEÓRICO

El microcontrolador ATMega164p dispone de 4 puertos de entrada/salida de uso


general, de 8 bits cada uno llamados PORTA, PORTB, PORTC, y PORTD. Esto da un total de
32 líneas generales de E/S. Cada una de las líneas de los puertos puede ser configurada
individualmente como entrada o salida. Cabe indicar también que estos pines pueden tener
funciones alternativas y pueden ser asignados a otros periféricos, en cuyo caso ya no
pueden ser usados como línea de E/S.

Para el manejo cada uno de los puertos se usan tres registros:

DDRx, de ocho bits, cada uno de los cuales está asignado a uno de los pines del
puerto. Cada bit permite configurar en forma individual si el pin va a ser entrada o
salida de la siguiente manera: Si el bit se pone a 0, ese pin será una entrada, y si se pone 1,
ese pin será salida.
PORTx de ocho bits. Cada bit está signado también a un pin. Para poner un valor lógico en
un pin, se debe colocar ese valor en el bit correspondiente en este registro, y si ese pin está
configurado como salida ese valor aparece físicamente en esa patita. Si la patita está
definida como entrada y se escribe un valor en ella, simplemente este valor no es mostrado
en ese pin.

PINx de ocho bits. Si se desea leer un pin que ha sido definido como entrada se debe leer
este registro. Si se lee el registro PORTx, no se lee lo que físicamente está en los pines, si
no lo que haya escrito con anterioridad en el registro PORTx.

4. TRABAJO PREPARATORIO

Período: 2018-A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

4.1 Consultar:
4.1.1 Las características generales del microcontrolador ATMEGA 164p,
especialmente en la parte referente a la disposición de terminales (pines)
generales de entrada/salida, los de alimentación, el RESET y los usados
para la programación del mismo
4.1.2 La manera de configurar y usar los puertos de entrada/salida.
4.1.3 El manejo de tablas en el AVR Atmega164p (uso de la instrucción LPM).
Esta instrucción se usará para realizar la conversión de binario a hexadecimal.
(Revisar el anexo al final)
4.2 Diseñar y armar en protoboard un circuito que permita ingresar 2 números de 8
bits mediante 2 dip switch que serán conectados el primero a PORTA y el segundo a
PORTB. Se sugiere que se habiliten los PULL UP internos para no usar resistencias
externas y conectar los interruptores a tierra. Se manejará un par de displays de 7
segmentos(ánodo o cátodo común) que serán conectados al PORTC y al PORTD. No
olvidar que los display de 7 segmentos deben conectarse usando resistencias
limitadoras de corriente, revisar las características eléctricas en cuanto a la capacidad
de manejo de corriente del microcontrolador para el diseño de las mismas (sección
Características Eléctricas del manual). En el pin sobrante en PORTC conectar un
interruptor el cual funcionara como selector, y el pin sobrante de PORTD colocar un
LED.
4.3 Escribir un programa en Assembler que permita dividir el número de PORTA para el del
PORTB; (este programa es el programa que se depuró y simuló en la práctica 3). En los
display se mostrará lo siguiente en hexadecimal. Si la entrada del interruptor del PORTC
está en 0L se mostrará la parte entera de la división y el LED del PORTD estará apagado
: mientras que si está en 1L se mostrará la parte fraccionaria y el LED estará encendido.
La decodificación de binario a hexadecimal se realizará por software dentro del
microcontrolador. (Tomar como referencia el anexo que está al final de esta hoja
guía…NO USAR DECODIFICADORES BCD a 7 segmentos EXTERNOS).

4.4 Realizar y presentar la simulación del programa en PROTEUS

5. EQUIPO Y MATERIALES

Material de escritorio.
Protoboard, leds, dip switch
Microcontrolador ATmega164P

6. PROCEDIMIENTO

Período: 2018-A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

6.1 El instructor explicará cómo instalar el software y driver necesarios para el


funcionamiento del programador y la configuración de los fusibles del microcontrolador
Atmega164P, previa a la programación del microcontrolador.

6.2 Probar el correcto funcionamiento del circuito diseñado y realizar los cambios en
programación pedidos por cada instructor.

7. INFORME:
7.1 Comentarios y conclusiones
7.2 Realizar lo que el instructor solicite.

ANEXO 1

PROGRAMA DE EJEMPLO DE MANEJO DE TABLAS


;*******************************************************
; Programa para convertir de BCD a 7 segmentos
; Por PORTA.3 al PORTA.0 entra el número hexadecimal en 4 bits
; Por PORTB.6 al PORTB.0 salen los 7 segmentos (cátodo común) no olvidar incluir las
; resistencias de 330 Ohm
;*******************************************************
.include "m164pdef.inc"
.def tempo=r17
.org 0x00
ldi tempo,0b00000000 ; 1 son salidas,0 entradas.
out ddra,tempo ; PORTA es la entrada en hexadecimal. Los pines no usados
dejarlos
; como entradas
ldi tempo,0b01111111
out ddrb,tempo ; PORTB es salida al display (bits 0 al 6, el 7 no se lo usa)
salto: ; este programa se lo repite indefinidamente
ldi zh,high(tabla<<1) ; Al usar la instrucción LPM, se usa el puntero Z. Los bits 15 al 1
; indican la dirección
ldi zl,low(tabla<<1) ; por eso se desplaza una posición a la izquierda( que es igual a
; multiplicar por 2)
; HIGH toma los 8 bits mas significativos de la dirección, mientras
; LOW toma los 8 menos significativos luego de estas instrucciones
; el puntero Z apunta a la base de la tabla
in tempo,pina ; leo el dato en hexadecimal que entra por el puertoA
cbr tempo,0b11110000 ; me aseguro que los 4 bits mas significativos sean cero
add zl,tempo ; sumo al puntero Z el desplazamiento para que apunte al
datorequerido
clr tempo ; pero como el puntero Z es de 16 bits, se debe hacer una
operación

Período: 2018-A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

; en 16 bits, primero se hace un ADD entre ZL y el desplazamiento


;en la tabla y luego un ADC entre ZH y 0
adc zh,tempo ; por si se genera CARRY
lpm tempo,z ; Se trae el dato apuntado por el puntero Z (ya actualizado con las
; instrucciones anteriores)
out portb,tempo ; El dato recuperado de la tabla con la instrucción anterior se
; saca por el puerto b
rjmp salto ; regresar para repetir el proceso
; La tabla a continuación contiene la información para convertir un
;hexadecimal de 4 bits a su equivalente en 7 segmentos
; Como esta tabla se almacena en la memoria de programa (FLASH)
,y
;esta memoria tiene unancho de 16 bits, se pueden
; guardar dos datos de 8 bits en cada línea. Esta es la razón que se
;ingresen dos datos en cada una de las líneas de la
; tabla que se muestra a continuación. Esta tabla es para un display
;en cátodo común.
tabla: ; los segmentos de la tabla están en este orden: gfedcba
.db 0b00111111,0b00000110 ;0,1
.db 0b01011011,0b01001111 ;2,3
.db 0b01100110,0b01101101 ;4,5
.db 0b01111101,0b00000111 ;6,7
.db 0b01111111,0b01101111 ;8,9
.db 0b01110111,0b01111100 ;10 (A),11 (b)
.db 0b00111001,0b01011110 ;12 (C),13 (d)
.db 0b01111001,0b01110001 ;14 (E),15 (F)

Elaborado por: Patricio Chico

Revisado por: Patricio Chico.- Responsable de la asignatura

Período: 2018-A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm

Vous aimerez peut-être aussi