You are on page 1of 8

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Laboratorio de Sistemas Microprocesados

INFORME X TRABAJO PREPARATORIO

Práctica #: _6_
Tema: PROGRAMACIÓN DE LOS MICROCONTROLADORES ATMEL.

Realizado por:

Alumno (s): Margarita Ruiz Proaño Grupo: GR-5

(Espacio Reservado)
Fecha de entrega: 2016 / 06 / 14 f. _________________________
Año mes día Recibido por:

Sanción: ____________________________________________________

PERÍODO
2016 – A
1) Consultar:

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.

VCC
Alimentación de Voltaje dc

GND
Tierra

Puerto A (PA7:PA0)
El puerto A sirve como entradas analógicas para el conversor Análogo Digital. El puerto A también
sirve como un puerto bidireccional de 8 bits con resistencias internas de pull up (seleccionables
para cada bit). Los buffers de salida del puerto A tienen características simétricas controladas con
fuentes de alta capacidad. Los pines del puerto A están en tri- estado cuando las condiciones de
reset están activadas o cuando el reloj no este corriendo. El puerto A también sirve para varias
funciones especiales del Atmega164P como la Conversión Análoga Digital.

Port B (PB7:PB0)
El puerto B es un puerto bidireccional de 8 bits de E/S con resistencias internas de pull up. Las
salidas de los buffers del puerto B tienen características simétricas controladas con fuentes de alta
capacidad. Los pines del puesto B están en tri-estado cuando las condiciones de reset están
activadas o cuando el reloj no esté corriendo. El puerto B también sirve para varias funciones
especiales del Atmega164P.
Port C (PC7:PC0)
El puerto C es un puerto bidireccional de 8 bits de E/S con resistencias internas de pull up
(seleccionadas por cada bit). Las salidas de los buffers del puerto C tienen características simétricas
controladas con fuentes de alta capacidad. Los pines del puesto C están en tri-estado cuando las
condiciones de reset están activadas siempre y cuando el reloj no este corriendo. El puerto C
también sirve para las funciones de Interfaz del JTAG, con funciones especiales del ATmega164P
como se menciona en las páginas iniciales.

Port D (PD7:PD0)
El Puerto D es un puerto bidireccional de entradas y salidas con resistencias internas de pull up
(seleccionadas por cada bit). Las salidas de los buffers del puerto D tienen características simétricas
controladas con sumideros de fuentes de alta capacidad. Los pines del Puerto D están en tri-estado
cuando llega una condición de reset activa, siempre y cuando el reloj no esté corriendo
.
El puerto D también sirve para varias funciones especiales del Atmega164P.

RESET
Entrada del Reset. Un pulso de nivel bajo en este pin por períodos de pulso mínimo genera un reset,
siempre y cuando el reloj no esté corriendo. La longitud del pulso mínimo está especificada en las
Características y Sistemas de Reset (Páginas 331 del Data Sheet). Pulsos cortos no son garantizados
para generar un reset.

XTAL1
Entrada para el amplificador del oscilador invertido y entrada para el circuito de operación del reloj
interno.
.
XTAL2
Salida del Oscilador amplificador de salida.

AVCC
AVCC es la alimentación de voltaje para el pin del Puerto F y el Conversor Análogo a Digital. Este
debe ser conectado externamente a VCC, siempre y cuando el ADC no sea usado. Si el ADC es
usado, este deberá ser conectado a VCC a través de un filtro paso bajo.

AREF
Está es la referencia para el pin de la conversión Análoga a Digital.

1.2 La manera de configurar y usar los puertos de entrada/salida.

• Pines de entrada/salida (I/O) de propósito general


• Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.
• Para añadir flexibilidad al micro, muchos de sus pines de entrada/salida están multiplexados con
funciones alternativas.
•Para la mayoría de los puertos, la dirección del pin I/O es controlada por el registro de dirección
de datos, llamado TRIS. TRISX controla la dirección del pin n del puerto X.
• Un 1 en el registro TRIS indica que el pin es entrada. Un 0 indica que es salida.
Estructura típica de un puerto de entrada/salida de propósito general.

El valor de RESET de los registros TRIS suele ser un ‘1’, de forma que por defecto los pines estén
configurados como entradas evitando posibles cortocircuitos en la alimentación que podrían dañar
el micro o el resto del sistema.
El registro PORT funciona como un latch para los datos de salida. Cuando el registro PORT se lee
(Ej, MOVF PORTB,W), el micro lee los niveles presentes en los pines de I/O (no en los latches).
Cuando una función está multiplexada en un pin de I/O de proposito general, la funcionalidad de
un pin puede cambiar para acomodarse a los requisitos del módulo periférico. Por ejemplo, si un
micro tiene un conversor A/D, los pines asociados a este módulo están configurados en un RESET
como entradas analógicas para evitar un consumo de corriente excesivo en el buffer de dicho pin si
este estuviera configurado como entrada digital y el valor de tensión en el pin estuviera a un nivel
intermedio

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)

LPM carga un dato de la memoria flash a un registro, es decir, carga un byte apuntado por el registro
Z en el registro R0. La memoria de programa está organizada en words de 16 bit y el bit menos
significativo del puntero Z selecciona el byte bajo (0) o el byte alto (1). Esta instrucción puede
dirigirse a los primeros 64K bytes (32K words) de memoria de programa. El registro puntero Z
queda inalterado por el funcionamiento.
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 los puertos PORTB y PORTD
respectivamente. 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.

3) Escribir un programa en Assembler que permita multiplicar los dos números que se
ingresan en los dip switch y mostrar el resultado en los dos display de 7 segmentos en
hexadecimal. Si el switch de selección se encuentra en ON se debe mostrar la parte
baja (menos significativa) del resultado de la multiplicación, mientras que si está en
OFF se debe mostrar la parte alta (más significativa) del resultado de la
multiplicación. La decodificación de binario a hexadecimal se realizará por software
dentro del microcontrolador. (NO USAR DECODIFICADORES BCD a / segmentos
EXTERNOS)
.include"m164pdef.inc"
.def var1=r16
.def var2=r17
.def res1=r18
.def res2=r19
.def aux=r20
ldi var1,0b00000000
out ddrb,var1
out ddrd,var1
ldi var1,0b11111111
out ddra,var1
out ddrc,var1
ldi var1,0b11111111
out portb,var1
out portd,var1
in var1,MCUCR
andi var1,0b11101111
out MCUCR,var1
cbi ddra,7

Lazo:
in var1,pinb
in var2,pind
mul var1,var2
mov res1,R0
mov res2,R1
sbis pina,7 ; si es 1L salta una instruccion
rjmp Bajo
mov aux,res2
andi aux,0b00001111
call subrutina
out porta,aux
mov aux,res2
andi aux,0b11110000
swap aux
call subrutina
out portc,aux
rjmp fin
Bajo:
mov aux,res1
andi aux,0b00001111
call subrutina
out porta,aux
mov aux,res1
andi aux,0b11110000
swap aux
call subrutina
out portc,aux
fin:
rjmp Lazo

subrutina:
ldi zh,high(TABLA<<1)
ldi zl,low(TABLA<<1)
add zl,aux
clr aux
adc zh,aux
lpm aux,z
ret

TABLA:
.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)

4) Realizar y presentar la simulación del programa en PROTEUS

Switch Cerrado o en ON(Parte Baja):


Switch Abierto o en OFF (Parte Alta):

5) Bibliografía
 http://www.atmel.com/products/microcontrollers/avr/default.aspx?tab=documents
 Set de instrucciones Avr
 Manual Atmega164p
 http://www.unioviedo.es/ate/alberto/TEMA4-puertos.pdf
 http://www.sc.ehu.es/sbweb/webcentro/automatica/web_avr/archivos/SET%20AT90S8
515/Transferencia%20datos/LPM.htm

You might also like