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]
© Copyright 2024