You are on page 1of 5

Boletn 3 - Estructura de computadores Microcontrolador AVR

Problema 1.- Considere la siguiente situacin inicial, donde se indica en hexadecimal el contenido de ciertos registros y direcciones de memoria Direccin Contenido $200 $201 $202 $203 $08 $03 $01 $00 Registro Contenido R0 R1 YH YL $00 $FF $02 $01

Indique el valor que tendr el registro R0 despus de ejecutar la instruccin indicada en cada uno de estos casos: (a) MOV R0,R1 (b) MOVW R0,Y (c) LD R0,Y+ (d) LD R0,-Y (e) LDD R0,Y+2 Problema 2.- Para cada una de las siguientes instrucciones describa la operacin que realiza e indique los registros internos y palabras de memoria que intervienen. Proponga para ellos unos valores iniciales concretos y determine qu valores alcanzarn finalmente. (a) STS $100,R16 (b) ST -X,R2 (c) STD Z+10,R16 (d) LPM R19,Z+ (e) IN R4,PORTB (f) OUT DDRC,R0

Problema 3.- Para cada una de las siguientes instrucciones describa la operacin que realiza e indique los registros internos y palabras de memoria que intervienen. Proponga para ellos unos valores iniciales concretos y determine qu valores alcanzarn finalmente. (a) PUSH R4 (b) SPM (c) POP R3 (d) LDS R19,$202 (e) LPM (f) MOVW X,Y

Problema 4.- Describa las siguientes instrucciones del ATMega328P (a) SBI P,K (b) INC Rd (c) CP Rd,Rr (d) RCALL etiqueta (e) BREQ etiqueta (f) ROL Rd (g) NOP (h) SLEEP (i) (j) WDR CPSE Rd,Rr

Problema 5.- Se desea mover una palabra de 32bits situada en el byte $100 de la memoria SRAM a partir de byte $200 de la memoria SRAM. Indique las distintas formas de hacerlo especificando las instrucciones necesarias. Problema 6.- Se desea mover una palabra de 32bits situada en el byte $100 de la memoria de programa a partir del byte $200 de la memoria SRAM. Indique las distintas formas de hacerlo especificando las instrucciones necesarias. Problema 7.- Con las instrucciones del microcontrolador ATMega328P escriba el programa que implemente la instruccin de alto nivel:

Rev. 5

Boletn 3 - Estructura de computadores Microcontrolador AVR FOR i=<valor_inicial> TO <valor_final> DO clculo1 siguiente_instruccin_tras_el_bucle

Donde clculo1 es una secuencia de operaciones que no es necesario indicar y, valor_inicial y valor_final son dos variables con los lmites del bucle FOR. Problema 8.- Indique los valores que tomaran los pines del microcontrolador ATMega368P tras la ejecucin de cada una de las siguientes instrucciones. El contenido de la posicin de memoria SRAM $202 es $0A .DEF LDI OUT EOR OUT LDS OUT SBI CBI IN TMP=R16 TMP,$FF DDRB,TMP TMP,TMP DDRC,TMP TMP,$202 PORTB,R16 PORTB,6 PINB,2 R0,PINC

Problema 9.- El procesador ATMega328P tiene el reloj funcionando a una frecuencia de 1Mhz. Se dispone de un dispositivo que enva 1000 valores de tamao byte con cierta frecuencia. El procesador atiende los datos mediante interrupciones, siendo la rutina de interrupcin la siguiente: RECIBE_BYTE: PUSH LDS ST POP RETI R0 R0,UDR0 Y+,R0 R0

Indique cada cuantos microsegundos puede enviar el dispositivo un byte sin que se pierda ninguno. Problema 10.- En una posicin de memoria $DATO existe un nmero binario entero positivo N. Se pretende obtener el valor SUM=N+(N-1)+(N-2)+ ... +2+1 y almacenarlo a partir de direccin de memoria $SUMA. (a) Obtenga una subrutina en ensamblador que calcule $SUMA siendo tanto los datos como el resultado de tamao byte. Suponga que no existe desbordamiento. (b) Repita el apartado anterior si los datos son de tamao Word (c) Indique las modificaciones a realizar en los apartados anteriores si se quiere contemplar el desbordamiento. Problema 11.- Realice una subrutina para sumar dos vectores de 10 nmeros enteros de 32 bits que se almacenan en posiciones consecutivas de memoria. La direccin de memoria en que se encuentra el primero de ellos es el contenido del registro de direcciones X y, la del segundo est en Y. Almacene el resultado a partir de Z, suponiendo que no existen problemas de desbordamiento. Problema 12.- Realice un programa que permita trasponer una matriz cuadrada de dimensin 5. Sus componentes son tamao palabra (W) y la forma de almacenamiento es la mostrada en la figura.

Boletn 3 - Estructura de computadores Microcontrolador AVR a11 a12 a13 a14 a15 ... = = = = = [M($A)] [M($A + [M($A + [M($A + [M($A +

a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45 a51 a52 a53 a54 a55

2)] 4)] 6)] 8)]

Problema 13.- A partir de la direccin de memoria $DIR de un sistema basado en un microcontrolador ATMega328P se dispone de una tabla de 20 elementos con signo de tamao palabra. Se desea disear una subrutina que permita calcular el valor medio del absoluto de los elementos, es decir:

res =

tabla [0 ]tabla [1 ]..tabla [ 19 ] 20

donde |x| = x si x>=0 o -x si x<0. Problema 14.- A partir de la direccin de memoria $DIR de un sistema basado en un microcontrolador ATMega328P se dispone de una tabla de 20 elementos con signo de tamao palabra. Se desea disear una subrutina que permita obtener el ndice asociado al primer valor ms repetido, y, en el caso de que no exista ninguno, la subrutina devolver -1. Problema 15.- A partir de la direccin $160 de la memoria de datos del ATMega328P se dispone de una tabla de 20 bytes sin signo. Se desea desarrollar un programa que permita almacenar en R0 el valor que ms se repite en dicha tabla y 0 en el registro R1. En caso de que no se repita ninguno, el programa deber poner a 1 el contenido del registro R1. Problema 16.- En los pines PB7-0 de un microcontrolador ATMega328P se han conectado diodos luminosos cuyos ctodos estn a tierra y en el pin PD4 se ha conectado el extremo de un pulsador mecnico (cuyo otro extremo se encuentra conectado a tierra) junto con una resistencia de pull-up. Se desea realizar un programa que permita mostrar a travs de los diodos el nmero de pulsaciones que se generan en el pulsador. La cuenta de las pulsaciones se deber llevar a cabo por el registro TCNT0 configurado adecuadamente en modo contador para que se incremente cada vez que exista un flanco de bajada (falling edge) en su entrada externa (PD4). Problema 17.- Programe una rutina que permita convertir un nmero BCD de ocho dgitos, el cual est almacenado a partir de la direccin NUM_BCD, a binario. El nmero convertido en binario se almacenar a partir de la direccin NUM_BIN. Represente el diagrama de flujo asociado y d una breve explica cin de las variables que usa el programa. Problema 18.- En los pines del puerto B del microcontrolador ATMega328P se han colocado leds hasta un total de ocho (uno por cada pin del puerto), de modo que un 1 lgico en el pin, enciende el LED y un 0 lgico, lo apaga. En el pin PD2 se ha conectado un pulsador mecnico de modo que si ste est presionado, introduce un 0 lgico en el pin, y un 1 cuando est en reposo. Al inicio, todos los leds estarn apagados y el microcontrolador esperando que la tecla se pulse. Cuando el microcontrolador contabilice dos pulsaciones, todos los leds se pondrn en intermitencia con periodo de 1 segundo (0.5 segundos encendidos y 0.5 segundos apagados). (a) Disee el programa sin usar interrupciones suponiendo que la frecuencia del reloj en de 4Mhz (periodo de 250x10-9s). (b) Disee el programa usando interrupciones para el temporizador y para el pulsador. Supngase que la frecuencia de reloj es de 4Mhz (periodo de 250x10-9s). Es recomendable el uso de interrupciones para el temporizador 0 y de la entrada externa.

Boletn 3 - Estructura de computadores Microcontrolador AVR

Problema 19.- En la siguiente figura se muestra un registro de desplazamiento de 16 bits cuya salida serie, O15 , seal de reloj, clk, y entrada de carga, L, se han conectado a los pines PB0,PB1 y PB2 de un microcontrolador ATMega328P con cristal de 1Mhz. Se desea desarrollar un programa que permita la lectura del dato almacenado en el registro externo y su almacenamiento en los registros R0 y R1 del microcontrolador. En concreto, el registro R0 contendr el byte ms significativo y el R1 el menos significativo. Para poder acceder al dato del registro externo R el microcontrolador debe seguir la siguiente secuencia: 1. De forma externa, la seal L pasar de 0 a 1, lo que implica la carga de un dato en el registro R externo. El microcontrolador escuchar est lnea y no tomar ninguna accin hasta que L vuelva a valer 0. 2. Transcurrido el pulso en L, el microcontrolador deber generar 16 pulsos de reloj, tal y como muestra la figura. 3. En el nivel alto del pulso de reloj, se deber leer el bit que aparece por la salida O15 y almacenarlo en la posicin que corresponda de los registros R0 o R1. 4. Una vez finalizada la lectura de los diecisis bits, el microcontrolador esperar la activacin de un nuevo pulso en L para repetir el proceso.

Problema 20.- Un conocedor del funcionamiento del ATMega328P quiere construir un molinillo espantapjaros para evitar las molestas suciedades que stos provocan en el balcn de su casa. El molinillo dispone de un motor de corriente continua que se pretende controlar con la salida PB0 del microcontrolador, de forma que, si PB0 es 1 el motor se activa y si es 0, se desactiva. Por otro lado, se dispone de una LDR que permite determinar si es de da o es de noche. La electrnica de adaptacin hace que la LDR ponga un 1 en la entrada PB1 del microcontrolador si es de da y 0, si es de noche. Todo el conjunto se alimenta mediante una batera, por lo que es recomendable economizar su consumo. En concreto el sistema debe operar del siguiente modo: 1. Deber estar en modo dormido la mayor parte del tiempo. 2. Deber despertarse por una interrupcin del timer0 cada minuto teniendo en cuenta que la seal de reloj es de 1khz (automticamente el microcontrolador ejecuta la rutina y contina la ejecucin de la instruccin situada detrs de SLEEP). 3. Si es de da, cada 10minutos, se deber activar el molinillo durante un 1 minuto. Si es de noche, no se proceder a ninguna accin. Problema 21.- Se desea simular la pulsacin de la tecla ENTER de un teclado de un PC usando un nico pulsador externo que se conectar, mediante un microcontrolador ATMega328P, al puerto PS2 de dicho PC. Por sencillez, consideraremos que la comunicacin slo se realizar de forma unidireccional desde el microcontrolador al PC. En ese sentido, el interfaz PS2 consta de dos lneas: DATA y CLOCK. Normalmente esas lneas estn a 1 lgico para representar que la transmisin se encuentra en estado de reposo. La siguiente figura representa el protocolo de comunicacin a seguir, formado por 1 bit de start, 8 bits de datos, un bit de paridad impar y un bit de stop que siempre est a 1.

Boletn 3 - Estructura de computadores Microcontrolador AVR

El microcontrolador debe generar la seal de reloj cuya duracin mxima del nivel mximo o mnimo es de 40us. El PC capturar el bit recibido por la lnea DATA en el flanco de bajada. Cuando el usuario pulse el pulsador externo, el microcontrolador enviar el cdigo $5A al interfaz PS2 y cuando libere dicho pulsador, el microcontrolador deber enviar el cdigo $F0 seguido del $5A.. La seal de reloj es de 2Mhz, los terminales PB3 y PB4 se usarn para generar CLOCK y DATA respectivamente y el pulsador externo se ha conectado al puerto PD0, de forma que cuando est pulsado se introduce un 0 y cuando no, un 1. (a) Disee una rutina que permita configurar los puertos y el timer0 para que que pueda generar desbordamientos cada 40us. No use interrupciones para el temporizador. (b) Disee una rutina que permita generar una ciclo de la seal de reloj. Esto es, usando el timero0, la rutina pondr el pin de CLOCK a 1 durante 40us y despus a 0 durante el mismo tiempo. (c) Disee una rutina que permita calcular el bit de paridad asociado a un byte almacenado en la direccin de memoria DATO ($60 de la SRAM). (d) Disee una rutina que permita transmitir la trama PS2 a partir de las rutinas anteriores y el dato almacenado en la direccin DATO. (e) Disee el programa que permita conectar las rutinas anteriores con los procesos a seguir con la pulsacin y liberacin de la tecla ENTER externa.

You might also like