Вы находитесь на странице: 1из 4

PROBLEMAS DE EXAMEN

PROBLEMA Nº 1.

Por el puerto P1 de un microcontrolador 8052 se recibe una información en formato BCD-


empaquetado. Una vez almacenada en memoria dicha información, se ha de convertir a
formato ASCII-hexadecimal (pasando por binario puro), para ser enviada a través de P4 a un
periférico cuando en P3.4 haya un flanco de subida. El valor convertido también se debe
almacenar en memoria. La conversión se debe realizar en una subrutina, indicando cuales son
los parámetros y de qué tipo.

PROBLEMA Nº 2

Realizar un programa en ensamblador del 8051/52 que compare dos tablas de datos BCD
empaquetados y nos indique cuántos elementos iguales hay en cada posición y cuál es el
mayor de ellos y su posición.
Una tabla está en la memoria interna y la otra tabla está en la memoria externa. Ambas tablas
tienen menos de 128 elementos. La comparación de las dos tablas hay que hacerla mediante
una subrutina con 4 parámetros de entrada (comienzo tabla interna, tamaño tabla interna,
comienzo tabla externa, tamaño tabla externa) y tres parámetros de salida (número de
elementos iguales, mayor elemento y su posición dentro de la tabla). Todos los parámetros
serán datos que deberán estar en la memoria interna.

PROBLEMA Nº 3

Una variable TEMP se actualiza aproximadamente cada medio segundo mediante la


interrupción del temporizador T0. Cuando ésta se produce, se ejecuta una rutina de
interrupción que realiza una adquisición del dato de un sensor de temperatura con una
resolución de 8 bits.

Programar el temporizador T0 para que se capture una muestra cada medio segundo sabiendo
que:
a) El desbordamiento del timer 0 produce una interrupción a través del vector de
interrupción situado en la dirección 0Bh de la tabla de vectores de interrupción.
b) La bandera de solicitud de interrupción TF0 se activa y desactiva por hardware.
c) El bit de habilitación de interrupción para el T0 es el ET0.
d) El bit de activación del temporizador es TR0 exclusivamente, por lo que el bit GATE
(TMOD.3) ha de estar a 0.
e) Hay una única interrupción por lo que no es necesario establecer prioridades.
f) Hay que seleccionar el temporizador mediante TMOD.2 (a 0).
g) Usar el modo 1 para generar medio segundo (TMOD.1 a 0 y TMOD.0 a 1).

Programar el conversor A/D sabiendo que:


a) Hay que seleccionar el canal 0 (ADCON.0 a ADCON.2).
b) Hay que seleccionar el modo de conversión de única adquisición (ADCON.3=0)
c) El bit ADCON.4 a 1 indica conversión terminada.
d) Los voltajes de referencia están dentro del rango 1,25-2,5V por lo que la adquisición se
inicia con DAPR a 84h.

El dato capturado en ADDAT se debe almacenar en TEMP en formato BCD empaquetado.

1
PROBLEMA Nº 4

2) Un termómetro digital envía una señal analógica a un microcontrolador 8051/52. Esta señal
se almacena en un buffer de 60 bytes en la memoria externa. La adquisición del dato se
obtiene cuando el timer 0 sobrepasa 1 s. Cuando se produce el desbordamiento se ejecuta una
rutina de interrupción que lee el dato y lo guarda en la posición que corresponde, con una
resolución de 8 bits. Cuando ya ha almacenado 60 bytes, los nuevos datos se guardan de
nuevo por el principio del buffer. Además hay que calcular la media de los 60 valores y
guardarla en una posición de memoria.

Programar el temporizador T0 para que capture una muestra cada segundo sabiendo que:
a) El desbordamiento del timer 0 produce una interrupción a través del vector de
interrupción situado en la dirección 0Bh de la tabla de vectores de interrupción.
b) La bandera de solicitud de interrupción TF0 se activa y desactiva por hardware.
c) El bit de habilitación de interrupción para el T0 es el ET0.
d) El bit de activación del temporizador es TR0 exclusivamente, por lo que el bit GATE
(TMOD.3) ha de estar a 0.
e) Hay una única interrupción por lo que no es necesario establecer prioridades.
f) Hay que seleccionar el temporizador mediante TMOD.2 (a 0).
g) Usar el modo 1 para generar 1 ms (TMOD.1 a 0 y TMOD.0 a 1).
h) El incremento del timer se corresponde con 1 us.

Programar el conversor A/D sabiendo que:


a) Hay que seleccionar el canal 0 (ADCON.0 a .2).
b) Hay que seleccionar el modo de conversión de única adquisición (ADCON.3=0)
c) El bit ADCON.4 a 1 indica conversión terminada.
d) Los voltajes de referencia son compatibles TTL (0-5V) por lo que la adquisición se inicia
con DAPR a 0.

PROBLEMA Nº 5

Crear una subrutina que realice la conversión de un número binario de 8 bits en un número
decimal de tres cifras codificadas en BCD empaquetado. La subrutina recibirá en A el dato y en
R0 la dirección donde almacenar la cifra BCD más significativa (centena). Las otras dos cifras
juntas se almacenarán en la siguiente posición.
Utilizar la subrutina en un programa que convierta continuamente el dato de 8 bits que se
recibe por P1 y una vez convertido se envía al puerto P4. Para indicar la llegada de un nuevo
dato al puerto P1 se aplicará externamente un nivel bajo en la patilla P3.2 y se pondrá a nivel
alto para indicar que se ha leído. Para enviar las cifras BCD por el puerto P4 hay que enviarlas
con un intervalo de 1 ms.
El programa y la subrutina se pueden realizar en ensamblador o en C.

PROBLEMA Nº 6

2) Un transductor de posición envía una señal analógica a un microcontrolador 8051/52. Esta


señal se almacena en un buffer de 128 bytes en la memoria externa. La adquisición del dato se
obtiene cuando el timer 0 sobrepasa 1 ms. Cuando se produce el desbordamiento se ejecuta
una rutina de interrupción que lee el dato y lo guarda en la posición que corresponde, con una
resolución de 8 bits. Cuando ya ha almacenado 128 bytes, empieza de nuevo por el principio
del buffer.

2
Programar el temporizador T0 para que capture una muestra cada ms sabiendo que:
a) El desbordamiento del timer 0 produce una interrupción a través del vector de
interrupción situado en la dirección 0Bh de la tabla de vectores de interrupción.
b) La bandera de solicitud de interrupción TF0 se activa y desactiva por hardware.
c) El bit de habilitación de interrupción para el T0 es el ET0.
d) El bit de activación del temporizador es TR0 exclusivamente, por lo que el bit GATE
(TMOD.3) ha de estar a 0.
e) Hay una única interrupción por lo que no es necesario establecer prioridades.
f) Hay que seleccionar el temporizador mediante TMOD.2 (a 0).
g) Usar el modo 1 para generar 1 ms (TMOD.1 a 0 y TMOD.0 a 1).
h) El incremento del timer se corresponde con 1 us.

Programar el conversor A/D sabiendo que:


a) Hay que seleccionar el canal 0 (ADCON.0 a .2).
b) Hay que seleccionar el modo de conversión de única adquisición (ADCON.3=0)
c) El bit ADCON.4 a 1 indica conversión terminada.
d) Los voltajes de referencia son compatibles TTL (0-5V) por lo que la adquisición se inicia
con DAPR a 0.

PROBLEMA Nº 7

Realizar un programa en ensamblador del 80x51/52 que partiendo de un word en binario,


obtenga en una tabla sus dígitos decimales en formato ASCII.
Todos los datos están en memoria interna. Crear un subprograma para realizar el cálculo
pasando los parámetros por pila. Usar (no crear) una subrutina llamada DIVWB que divide un
word (R0, R1) entre un byte (R2) y devuelve el cociente (R0, R1) y el resto (A), pasando sus
parámetros por registro. Esta subrutina se encuentra en el fichero “division.asm”.

PROBLEMA Nº 8

Realizar un programa en ensamblador del 8051/52 que llame a una subrutina que busque un
dato en una tabla en la memoria externa.
De la tabla se conoce la dirección inicial de la misma, contenida en la dirección INITAB, el
tamaño de la misma situada en TAM (<= 256) y el dato a buscar que está en la dirección DAT,
todos ellos situados en la memoria interna.
A la subrutina hay que darle los parámetros de entrada convenientes y la salida se guardará en
la posición RESUL (en la memoria interna), que devolverá un 0 si no ha encontrado nada o la
dirección de memoria donde está el dato dentro de la tabla.
Usar el procedimiento de búsqueda dicotómica (ir dividiendo la tabla de dos en dos), de forma
recursiva. La tabla se supone ordenada de menor a mayor y con un número par de valores.

PROBLEMA Nº 9

Realizar un programa en ensamblador del 8051/52 que simule el funcionamiento de una luz
deslizante en una tanda de 8 luces. La frecuencia de desplazamiento de la luz variará según el
tiempo de retardo empleado que deberá ser de 1s aproximadamente, sabiendo que la
instrucción mov Rn,dato y djnz tardan 2 ciclos de reloj cada una. El contador interior es de
0ffh. Las luces se encienden de izquierda a derecha siempre.

3
Cuando se produce la interrupción externa int0, se ejecutará una rutina que alterne los dos
nibles (uno de ellos 1100 y el otro 0011) 10 veces. Programar la IT0 con flanco de bajada (1) y
activar la interrupción EX0 y la general EAL.

PROBLEMA Nº 10

Realizar un programa en ensamblador del 8051/52 que convierta los datos de una tabla de
datos ASCII-Hexadecimal a sus valores numéricos tipo byte. Dicha tabla se encuentra en la
memoria interna. Los resultados deben colocarse a continuación. Para hacer la conversión
crear una subrutina que a partir de dos valores hexadecimales se obtenga el byte
correspondiente. Los parámetros pasarlos por registro.

Вам также может понравиться