práctica nº6 - Escuela Politécnica Nacional

LABORATORIO DE SISTEMAS MICROPROCESADOS
ESCUELA POLITÉCNICA NACIONAL
Campus Politécnico "J. Rubén Orellana R."
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 sumar o restar números de 8 bits, con el
microcontrolador ATmega164p.
3. INFORMACIÓN
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.
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
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
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 Anexo1)
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 a dos puertos. Se manejará un par
de displays de 7 segmentos(ánodo o cátodo común) que serán conectados a los
otros dos puertos disponibles. 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 uno de los
dos pines sobrantes en los puertos de los display conectar un interruptor el cual
funcionara como selector, y el pin sobrante colocar un led.
4.3 Escribir un programa en Assembler que permita sumar o restar los dos números que
se ingresan en los dip switch, la operación a realizar va a depender al estado del
selector, (es decir en una posición (ON)se suma mientras que en la otra posición se
resta (OFF)) y el resultado de la operación debe ser mostrado en los displays de 7
segmentos en hexadecimal. La decodificación de binario a hexadecimal se realizará
por software dentro del microcontrolador. (NO USAR DECODIFICADORES BCD a /
segmentos EXTERNOS).
4.4 Realizar y presentar la simulación del programa en PROTEUS
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
5. EQUIPO Y MATERIALES
Material de escritorio.
Protoboard, leds, dip switch
Microcontrolador ATmega164P
6. PROCEDIMIENTO
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.2 Realizar lo que el instructor solicite.
Responsables.
Ing. Jhon Pilataxi
Revisado por:
MSc. Patricio Chico
Jefe de Laboratorio de Sistemas Microprocesados
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
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
; 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
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
;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: ;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)
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]