Enginyeria Tècnica Industrial ESCOLA POLITÈCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS Asignatura: Impartición: Curso: Profesores: (esp. Electrònica Industrial) B.O.E. 6-Març-2001 4683-Informática Industrial (9 créditos) 2º Curso-Anual 2006-2007 Javier Antich, Francesc Bonin y Joan Pons MANEJO DEL MICROCONTROLADOR 8051 FECHA DE ENTREGA: 10 DE ENERO DE 2007 (2P) Problema 1. • Objetivos: Contar tiempo sin el uso de timers. • Descripción: a) Haciendo uso de la instrucción DJNZ, programar un fragmento de código cuya duración requiera exactamente 100ms. Asumir un clock de 12Mhz. b) Repetir el apartado a) suponiendo ahora una duración de 1s para el código y una frecuencia de oscilación de 9,6Mhz. Implementar, posteriormente, un reloj (HH:MM:SS) en base al fragmento de código resultante realizando sobre este último las modificaciones que sean necesarias. Asegurar que el reloj ni se adelanta ni se atrasa. (1P) Problema 2. • Objetivos: Operar a nivel de bit. • Descripción: Implementar la función lógica f = a ⋅ (b + c) + d ⋅ a + (c ⋅ e) donde a, b, c, d y e representan los cinco bits menos significativos del puerto P1 y f el bit más significativo. ( )( ) (1P) Problema 3. • Objetivos: Entender la importancia de la prioridad de una interrupción. • Descripción: Configurar los timers 0 y 1 en el mismo modo de funcionamiento. Seguidamente, ponerlos en marcha con una diferencia temporal de 10 μs. Las rutinas de servicio de interrupción vinculadas a esos timers deben tener una duración de 20 μs. Observar detenidamente lo que sucede tras el overflow de cada timer. Repetir el proceso utilizando diferentes esquemas de prioridades modificando adecuadamente el registro IP. Manejo del Microcontrolador 8051 Informática Industrial (1P) Problema 4. • Objetivos: Comprobar la manipulación implícita de la pila que hacen algunas instrucciones. • Descripción: ¿Cuál es la principal diferencia entre una instrucción JMP y una CALL? Escribir un programa que use un JMP y compararlo con otro que use la llamada CALL. Para ello, observar el contenido de la pila antes y después de su ejecución, determinando qué valores se han guardado en ella en cada caso. Propón un programa que mediante el uso de una de estas instrucciones haga crecer la pila hasta su límite sin sobrepasarlo. (1P) Problema 5. • Objetivos: Manejar la pila. • Descripción: Se pretende que tras la ejecución de la rutina de servicio de la interrupción externa 0, el programa regrese a un punto diferente del Main de aquél donde había sido interrumpido. Suponer que esa dirección de retorno se encuentra almacenada en los registros R0 (LSBs) y R1 (MSBs). Comprobar que tras esa operación, el µC sigue generando/atendiendo la mencionada interrupción. Adicionalmente, verificar que el tamaño de la pila no aumenta con el número de interrupciones. (1P) Problema 6. • Objetivos: Trabajar con números mayores de 8 bits en operaciones con y sin signo. • Descripción: Realizar la multiplicación de dos números de 8 bits sin signo utilizando tantos bits como sean necesarios para almacenar el resultado de la operación. Suponer, posteriormente, que dichos números pueden representar también valores negativos. (1P) Problema 7. • Objetivos: Uso de las instrucciones de salto corto (SJMP) y absoluto (AJMP). • Descripción: Determinar la máxima distancia de salto (hacia mayores y menores posiciones de memoria) de una instrucción SJMP. ¿Cualquier salto realizable mediante un SJMP puede llevarse también a cabo con una instrucción AJMP? Razona la respuesta ayudándote de ejemplos. (1P) Problema 8. • Objetivos: Salto condicional al bit. • Descripción: Realizar un programa que realice la rotación de un bit a uno en el puerto P2 hacia la izquierda si el estado del pin P1.0 es 1, y realice la rotación del bit a uno hacia la derecha si el pin P1.0 está a 0. Para ello, utilizar las instrucciones JB/JNB. (1P) Problema 9. • Objetivos: Acceso a la memoria RAM externa. • Descripción: Se pretende guardar en 8 posiciones de memoria consecutivas de la memoria RAM externa, empezando por la posición 0001h, el resultado de sumar los valores contenidos en todas las posiciones de memoria anteriores (de la 0000h a la 000xh – 1). Establecer como valor de la posición de memoria 0000h un 1. 2 Manejo del Microcontrolador 8051 Informática Industrial NOTA IMPORTANTE Cada alumno deberá entregar un informe en donde se explique la solución dada a cada uno de los anteriores problemas, y se presenten los programas resultantes comentados así como varios resultados de simulación obtenidos con la herramienta Pinnacle que demuestren la validez de dichas soluciones. En la primera página del informe deberá constar el nombre de la asignatura, el título de la práctica, el curso académico, el nombre del autor del informe (en negrita) y, finalmente, el nombre del otro miembro del grupo de prácticas (texto normal). La nota final de la práctica se calculará de la siguiente manera: 25 % – Informe 75 % – Solución a los problemas No se aceptará ninguna práctica después del plazo de entrega establecido!!! 3