Boletín de problemas del tema 4 Problema 1.- Determine qué instrucciones permiten leer y escribir datos en la zona de registros de entrada/salida. Problema 2.- Se desea diseñar una subrutina que permita sumar 20 bytes (positivos) almacenados a partir de la dirección $60 de la SRAM y almacenar el resultado en el registro R0( supóngase que no existe desbordamiento). Problema 3.- Repita el apartado anterior para el caso de que exista desbordamiento. (El resultado se almacena en las dirección $80 y $81). Problema 4.- Se desea diseñar un programa para el microcontrolador AT90S2313 que permita multiplicar dos números almacenados en los registros r1 y r2 y almacenar el resultado correcto a partir de la dirección de memoria $60 de la SRAM. Se requiere un diagrama de flujo y la definición de las variables usadas. Problema 5.- A partir de la dirección $60 se han almacenado, consecutivamente, 16 bytes de datos. Se pide la realización de un programa que obtenga el número de bits a 1 lógico que se encuentran en dichos 16 bytes, y lo almacene en el registro R16. Como paso previo a la realización del programa, se debe realizar una subrutina que permita obtener el número de bits a 1 existentes en el registro R1, y almacenar el resultado en el registro R2. El programa principal debe usar, obligatoriamente, dicha subrutina. Problema 6.- Configure el AT90S2313 para que genere interrupciones cada 5ms aproximadamente, sabiendo que este microcontrolador dispone de un oscilador de cuarzo de 1Mhz. Problema 7.- El sistema digital de la figura está construido con un microcontrolador AT90S2313, dos registros de 8 bits (74573) y 2 visualizadores de siete segmentos. Se desea obtener un conjunto de subrutinas que permitan la representación de cualquier número entre 0 y 99 en los displays de 7 segmentos. Además se pide definir las interconexiones entre el microcontrolador y los latches y entre estos últimos y los displays de siete segmentos. a f LATCH [8] 74573 b g e AT902313 c d h a LATCH [8] 74573 f b g e c d Microprocesadores 19/12/06 h 1 Boletín de problemas del tema 4 Problema 8.- Repita el ejercicio anterior para las siguiente estructura en la que se ha eliminado los latches. Además la alimentación de los displays dispone de unos transistores conectados, a través de resistencias, con salidas del microcontrolador. Esto implica que cuando la salida del microcontrolador está a 1, el transistor se activa permitiendo el flujo de corriente hacia el display correspondiente, mientras que si la salida está a 0 el transistor se desactiva provocando el corte de suministro al display, por lo que sus diodos se apagan. VCC VCC a a f 1MHZ b f g AT902313 b g e e c d h c d h Problema 9.- Se desea diseñar un programa para el microcontrolador AT90S2313 que permita el contaje del número de veces que se pulsa una tecla conectada al puerto PB0 (tecla pulsada = 0, tecla sin pulsar =1), y muestre el valor de cuenta en un display de siete segmentos, tal como muestra la siguiente figura. (Se entiende que sólo es posible mostrar del 0 al 9 y por tanto se supone que no se generan más de esas pulsaciones). Se requiere el diagrama de flujo del programa, así como la definición de las posiciones ocupadas por cada variable. 5v PB0 1MHZ a AT902313 f b g e c d h Problema 10.- Se desea diseñar un sistema que permita regular un cruce mediante semáforos tal y como se representa en la siguiente figura Microprocesadores 19/12/06 2 Boletín de problemas del tema 4 3 2 4 1 Los semáforos constan de luces de aviso a peatones, por lo que cada uno de ellos consta de 5 luces diferentes. El semáforo 1 y 3 se comportan de idéntica forma, y lo mismo ocurre con el 2 y 4. Es evidente que cuando los semáforos 1 y 3 permiten el tráfico por sus correspondientes vías, los 2 y 4 deben prohibirlo y a la inversa. El modo de funcionamiento de cada semáforo debe ser: • • • • • La luz roja se mantiene encendida durante 30 segundos La luz verde durante 25 segundos La luz ámbar durante 6 segundos Cuando la luz verde se encuentra encendida, la bombilla roja que prohibe el paso de peatones debe estar activada. Cuando la luz roja se encuentra encendida, la bombilla verde del paso de peatones debe estar activada, salvo en los 10 últimos segundos en el que esta debe parpadear con un periodo de 1 segundo. Problema 11.- Se desea comunicar un sistema basado en el AT90S2313 con un PC a través de un puerto serie usando un enlace full-dúplex a 9600bps, 8 bits de datos, 1 bit de stop y sin paridad. Diseñe la rutina que permita configurar la UART para tal efecto suponiendo que la frecuencia de reloj es de 4Mhz. Problema 12.- Diseñe una rutina que permita transmitir un conjunto de N bytes almacenados a partir de la dirección Buffer_tx de la memoria de datos. Problema 13.- Repita el problema anterior siguiendo una configuración por interrupciones. Problema 14.- Diseñe una subrutina que permita almacenar, a partir de la dirección de memoria Buffer_rx, el conjunto de datos que se han recibido por la UART. El tamaño de la zona reservada a almacenar los datos recibidos es de N bytes. La subrutina, irá depositando los datos recibidos en posiciones consecutivas hasta el tope. Una vez alcanzado éste, se proseguirá almacenando datos a partir de la dirección inicial. Supóngase que la rutina no debe quedarse esperando la recepción de un dato, de forma que, cada vez que se invoque, si existe un dato éste se leerá y almacenará, devolviendo el control al programa principal y, si no existe dato , simplemente, la rutina devuelve el control al programa principal Microprocesadores 19/12/06 3 Boletín de problemas del tema 4 Problema 15.- Repita el problema anterior siguiendo una configuración por interrupciones. Problema 16.- Se desea diseñar una subrutina que permita configura la UART a 2400bps y en canal full-dúplex. Se deben habilitar la generación de interrupciones por recepción y por búffer de transmisión vacío. ¿La SDU podría contener un bit de paridad? En caso afirmativo haga una función que permita calcularlo e introducirlo en la SDU y otra que se invoque cada vez que existe un dato nuevo y permita determinar si hay, o no, error de paridad. ¿La SDU podría contener 2 bits de stop?. En caso afirmativo, indique cómo. ¿Es posible que la SDU contenga un número de bits menor a 8?. Supóngase que la frecuencia de reloj del Microcontrolador es de 4Mhz. Problema 17.- Diseñe un programa que permita configurar al microcontrolador como un repetidor. En concreto, éste recibirá, por la línea de recepción de la UART, un conjunto de caracteres que irá almacenando en una cola. Cuando existan 10 elementos almacenados, estos se transferirán por la línea de transmisión del puerto serie y así, sucesivamente. La comunicación serie trabaja a 2400bps y el reloj del microcontrolador está a 4Mhz. a) Supóngase que la recepción y transmisión se realiza sin el uso de interrupciones. b) Supóngase ahora que, ambas, deben ser gestionadas por interrupciones. Microprocesadores 19/12/06 4