ETSIT Escuela Técnica Superior de Ingenieros de Telecomunicación Sistemas Electrónicos Tercer Curso E.T.S.I.T. Convocatoria ESPECIAL. Diciembre 2002 Datos Personales Nombre: Primer Apellido: Segundo Apellido: DNI y firma: Calificación Pregunta Puntuación Pregunta Puntuación Nº. 1 Nº. 6 Nº. 2 Nº. 7 Nº. 3 Nº. 8 Nº. 4 Nº. 9 Nº. 5 Nº. 10 Revisado Calificación Final: Las Palmas de Gran Canaria a 2 de Diciembre de 2002 Convocatoria Especial. Sistemas Electrónicos Diciembre 2002 Pregunta 1. (1.5 Ptos.) 1. 2. 3. 4. 5. Responder brevemente a las siguientes cuestiones: 0.3. Uso de la señal STRB/R/W* en el 68HC11 en cada uno de los modos de funcinamiento. Indicar si es de entrada o de salida. 0.3. Dibujar el protocolo de comunicación por Simple Strobe de salida. Incluir en el cronograma la señal de reloj interna del 68HC11. 0.3. Si se está ejecutando una rutina de servicio para una interrupción XIRQ, ¿se podría de alguna manera atender a una interrupción del tipo I? Razonar brevemente la respuesta. 0.3. Podría usarse el Pulse Accumulator para generar una interrupción en tiempo real? En caso afirmativo indicar cual sería la programación del registro de control del Pulse Accumulator así como cada cuanto tiempo se produciría la interrupción. 0.3. Explicar brevemente los bits NF y FE en el registro SCSR. ¿Cuándo se producen? Pregunta 2. (1.5 Ptos.) Se dispone de la siguiente declaración de variables: LONG EQU XX ; XX menor o igual a 128 DAT01 RMB LONG ; Dato1 en BCD de LONG bytes DAT02 RMB LONG ; Dato2 en BCD de LONG bytes RES RMB LONG ; Definición de la lista Dar el código en ensamblador del 68HC11 para realizar su suma y depositarla en una zona de memoria de LONG bytes etiquetada como RES (utilizar un bucle). No se permite la definición ni reserva de más posiciones de memoria que las que se dan, así como el uso de la pila. Pregunta 3. (2.7 Ptos.) Se pretende diseñar un sistema para medir la temperatura de un objeto utilizando un sensor digital de temperaturas que opera en los rangos de 25 (valor $00 convertido) a 75 (valor $FF convertido) grados. El sensor digital dispone de un interfaz serie asíncrono (9600 baudios, 8 bits de datos, 1 bit de STOP)con dos señales (TX y RX). El sensor funcina de la siguiente manera: - Al recibir el comando $A0 el sensor convierte la temperatura ambiente. Una vez convertida la temperatura, el sensor envía por el puerto serie el comando $D0 y el valor en binario correspondiente a la temperatura convertida. Al comando $D0 siempre le sigue el valor de la temperatura convertida. - En el momento en que la temperatura sea inferior a 25 grados, el sensor enviará de forma continua (5ms) el comando $0F. Si la temperatura es superior a 75 grados, enviará de forma continua (5ms) el comando $F0. En ambos casos, el sensor no responderá al comando $A0. Se pretende visualizar a través de 2 displays de 7 segmentos la temperatura ambiente de una habitación, muestreándola cada segundo aproximadamente. En caso de que la temperatura esté fuera de rango, se debe indicar el valor 25 ó 75 con el punto decimal del display menos significativo encendido. 1. Esquema detallado del conexionado del sistema. 2. Programa de control del sistema. Para la implementación del sistema, se dispone de: MC68HC711E2: 256 bytes de memoria RAM a partir de la dirección $0000 2 K de memoria EPROM mapeados al final del mapa de memoria. 74LS47: Decodificador BCD a 7 segmentos. Entradas: A,B,C,D Salidas: a,b,c,d,e,f,g 2 Displays de 7 segmentos Pregunta 4. (1.8 Ptos.) Responder brevemente a las siguientes cuestiones acerca del MC68000: 1. 0.3. Suponer el siguiente modo de direccionamiento en el MC68000: d8( (An),Ri.X). Indicar cual sería la dirección efectiva de este modo de direccionamiento. En el ejemplo: MOVE.W -4((A2),D4.W),D3 y suponiendo A2=$00003456, D3=$01234567 y 1 Convocatoria Especial. 2. 3. 4. 5. 6. Sistemas Electrónicos Diciembre 2002 D4=$FFFF1200, indicar cual sería el valor de D3 (suponer e indicar los contenidos de las posiciones de memoria que se utilicen). 0.3. Dar el formato de la instrucción CMP en caso de tener la siguiente sintaxis: CMP.t (An)+,<adea>. Indicar qué campos habría que codificar y con qué tamaño. El código de operación de esta instrucción consta de 4 bits (los más significativos). ¿Necesitaría palabras de extensión? En caso afirmativo indicar en qué casos y cuantas. 0.3. Escribir una macro denominada CLEAR en la que se ensamble la instrucción CLR.L D0 en caso en que el primer y segundo parámetro sean dos cadenas de caracteres iguales, en caso contrario se debe ensamblar la instrucción CLR.W D0. 0.3. ¿Qué realiza la instrucción TAS? 0.3. Modificar el siguiente código para que su ejecución sea más rápida: MOVE #65.000,D2 L1 MOVE D0,$56(A0,D1.W) DBF D2,L1 0.3. Diferencias en el código objeto de un programa al ser definido utilizando la directiva de origen y la directiva de comienzo de sección (directiva SECTION). Pregunta 5. (2.0 Ptos.) Escribir un programa en ensamblador del 68000 en el que se defina una base de datos, etiquetada como LISTAS, de 100 elementos. Cada elemento estará formado por cuatro campos, definidos con el siguiente orden: - Nombre: 20 caracteres ASCII - Teléfono: 8 dígitos en BCD empaquetado - Calle: 20 caracteres ASCII - DNI: 8 dígitos BCD empaquetados El programa principal dispondrá además de dos elementos definidos en memoria y etiquetados como DNI y NOMBRE, Escribir una rutina en ensamblador del 68000, denominada SEARCHDNI, que busque el DNI contenido en DNI en la lista y deposite el nombre correspondiente en la zona etiquetada como NOMBRE. En caso de no encontrarse el DNI en la lista, habrá de almacenar el valor $FF en toda la longitud del nombre. Se pide: 1. Dar el tamaño de cada elemento de la tabla. 2. Escribir la rutina para realizar la búsqueda, así como escribir el código en ensamblador correspondiente al programa principal. El paso de parámetros a la subrutina se realizará por la pila. 3. Indicar qué símbolos aparecerían en la tabla de símbolos en el ensamblado del programa. Pregunta 6. (0.5 Ptos.) Se tiene la siguiente declaración de variables en un programa: VALOR0 EQU $2345 LONG0 EQU XX ; Máximo valor de LONG0 es $FFFF LISTA0 DS.W LONG0 VALOR1 EQU $123A LONG1 EQU XX ; Máximo valor de LONG1 es $FFFF LISTA1 DS.W LONG1 Se pide: 1. Escribir una macro, denominada FILL, que rellene una lista de longitud variable y definida en memoria con un valor determinado. 2. Escribir las llamadas a la macro para rellenar las listas 0 y 1 con los valores VALOR0 y VALOR1 respectivamente. Las llamadas deben contener al menos el nombre de la lista y el nombre del valor con que se va a rellenar. 2 Convocatoria Especial. Sistemas Electrónicos Anexo Esquema para la realización del sistema de medición de temperaturas. 3 Diciembre 2002