Relación de Problemas I 352) $1'5e6 52/'È1 $5$1'$
1. Realizar el cálculo del tiempo que transcurre durante la ejecución del bloque de instrucciones sombreado, en función del contenido de los registros y del tiempo de ejecución de las instrucciones correspondientes al siguiente código, considerando que la frecuencia del reloj del microcontrolador es de 12 MHz. NAME RETARDO ; Rutina ejemplo de utilización de un retardo SoftWare INICIO: MOV R0, #55H ; Se carga el Registro R0 con #55H SAL0: MOV R1, #85H ; Se carga el Registro R1 con #85H SAL1: MOV R2, #0FFH ; Se carga el Registro R2 con #FFH SAL2: DJNZ R2, SAL2 ; Decrementa R2 y repite el bucle ; hasta que R2==0 DJNZ R1, SAL1 ; Decrementa R1 y repite el bucle ; hasta que R1==0. Por cada lazo de R1, ; se ejecuta FFH veces el bucle R2 DJNZ R0, SAL0 ; Decrementa R0 y repite el bucle ; hasta que R0==0. Se decrementa 85H ; veces R1 y 85H*FFH veces R2 END 2. Realizar la suma de dos números de 16 bits. El byte alto del primer operando se encuentra en la dirección D:71H y el byte bajo en la D:70H, del mismo modo, el byte alto del segundo operando se encuentra en la dirección D:73H y el byte bajo en la D:72H. El byte alto del resultado se situará en la posición D:75H y el bajo en la D:74H y en la D:76H el posible acarreo. 3. Realizar un código similar al anterior salvo que los datos de entrada y de salida se expresen en BCD (Decimal Codificado en Binario). 4. Convertir 11 números codificados en ASCII en Decimal. Los números están situados en las posiciones de memoria RAM Interna comprendidas entre la 60H 6AH. Colocar los resultados en las posiciones D:40H- 4AH. 5. Realizar el ejercicio anterior modificando la rutina de conversión. En esta ocasión: Conversión de caracteres ASCII a números hexadecimales. Conversión de números hexadecimales a caracteres ASCII. 6. Se tiene una tabla de datos en la memoria externa de código, ROM, de la posición C:1000H 1050H. Escribir un programa Realizar un programa para buscar el dato de mayor valor de la tabla y situarlo en la posición D:60H de la memoria RAM Interna. NOTA: Para realizar el acceso a la memoria externa de programa se deben utilizar las instrucciones: MOVC A, @A+DPTR A Õ ((A) + (DPTR)). MOVC A, @A+PC A Õ ((A) + (PC)). Ejemplo: Acceso sobre una tabla de 4 datos....... 90H MOV A, 91H #01H 92H CALL 93H Dir. Rutina...... A0H A1H A2H INC A MOVC A,@A+PC RET A3H DATO 1 A4H DATO 2 A5H DATO 3 A6H DATO 4...... MAPA MEMORIA CÓDIGO MOV A, #01H CALL TABLA TABLA: INC A MOVC A,@A+PC RET DATO1 DATO2 DATO3 DATO4
7. Dada la siguiente tabla de direccionamientos explicar las diferencias entre ellos. <byte> Direc Direccionamiento directo. <byte> @Ri Direccionamiento indirecto a través de los registros R0 y R1. <byte> Ri Direccionamiento por registro. <byte> # data Direccionamiento inmediato. Constante de 8 o 16 bits. 8. Rellenar la tabla de operaciones aritméticas siguiendo el patrón propuesto en la primera línea. Nemónico Operación Modos de direccionamiento Ciclos de Flags afectados Dir Ind Reg Inm Ejecución C OV AC ADD A, <byte> A=A+ <byte> 1 ADDC A, <byte> SUBB A, <byte> INC A INC <byte> INC DPTR DEC A DEC <byte> MUL AB DIV AB A= INT [A/B] B= mod [A/B] DA A 9. Rellenar la tabla de operaciones lógicas siguiendo el patrón propuesto en la primera línea. Nemónico Operación Modos de direccionamiento Ciclos de Flags afectados Dir Ind Reg Inm Ejecución C OV AC ANL A, <byte> A=A & <byte> 1 ANL <byte>, A ANL<byte>,#data ORL A, <byte> ORL <byte>,a ORL <byte>,#data XRL A, <byte> XRL <byte>, A XRL <byte>,#data CLR A CPL A RL A RLC A RR A RRC A SWAP A 10. Qué utilidad puede tener la utilización de la instrucción MOV DPTR, #data(16 bits)? 11. Qué diferencias hay entre las instrucciones MOVX A,@DPTR y MOVC A,@A+DPTR? 12. Identificar y representar gráficamente las distintas partes de que consta la memoria de datos interna e indicar la misión que cumple en el sistema. 13. Indicar en qué zona o zonas de la memoria se escribe el dato implícito en las siguientes instrucciones. Hacer una representación gráfica del estado de la memoria tras la ejecución de todas las instrucciones. 1. MOV 25H, #46H 2. MOV R0, #25H Y MOV @R0, #46H 3. MOV 85H, #3Ah 4. MOV R1, #25 Y MOV @R1, #3AH 14. Cuántos bancos de registros tienen los microcontroladores genéricos de la familia MCS-51? Cuál es el banco por defecto y por qué?. Indicar las instrucciones a ejecutiar para cambiar al banco Nº 3. 15. Explicar la función de la señal RESET e indicar cómo inicializa los siguientes registros:
Registro 7 6 5 4 3 210 PC ACC B PSW SP DPTR PO P1 P2 P3 16. Escribir la instrucción que resuelva la condición de salto relativo cuando el flag FO overflow se halla activado. 17. Los saltos relativos están situados dentro del rango comprendido entre 128 y +127 byte. Cómo se procedería si el salto que se tuviera que realizar fuese de 300 bytes? Ilustrar con un ejemplo el modo de proceder. 18. Establecer las diferencias entre las instrucciones JMP con los prefijos S,L y A. 19. Cuál es la diferencia entre las instrucciones RET y RETI? 20. Qué chequea la CPU para realizar los saltos condicionales JZ y JNZ?. Justificar la respuesta. 21. Señalar las diferencias entre las instrucciones: CJNE A, <byte>, #data, rel y CJNE <byte>, #data, rel. 22. Explicar el proceso de generación de código a partir de un fichero.asm. Comenta el contenido de los ficheros generados por el ensamblador y el linkador. 23. A partir del esquema eléctrico denominado ESTACIÓN DE CONTROL DE RIEGO responder a las siguientes preguntas: 1. Cuál debe ser la posición del interruptor que produce el RESET en el microcontrolador, S2, para que el circuito funcione correctamente y ejecute las instrucciones? 2. Cuál debe ser la posición del interruptor S1, para que el circuito ejecute las instrucciones contenidas en la memoria ROM interna? Y para que lo haga con las instrucciones de la memoria ROM EXTERNA? 3. Obtener el mapa de memoria de datos y de programa, detallando las posiciones donde reside el control de las líneas que comandan los diferentes LED, 7 Segmentos, Entradas y Salidas. 4. Describir una rutina en ensamblador que encienda/apague cada uno de los LED de la ESTACION de D Riego. 5. Describir una rutina que permita detectar y reconocer la pulsación de una tecla del teclado 4 4 conectado directamente al P1. 6. Describir una rutina que permita representar 4 números BCD en cada uno de los 7 Segmentos contenidos en el sistema. 7. Realizar un programa en ensamblador que represente en pantalla la tecla pulsada. A los caracteres #, *, F1, F2, F3, F4 se le asignarán los códigos BCD, A, B, C, D, E, F respectivamente. 8. Realizar un programa en ensamblador que represente en pantalla las 4 últimas teclas pulsadas. 9. Realizar una rutina que permita hacer sonar al ALTAVOZ con un tono de 1 KHz si se detecta un 1 en la señal de entrada ERROR. Nota: Para excitar al altavoz y generar un tono de 1KHz se debe utilizar una rutina de retardo o una interrupción de tiempo que genere una secuencia como la representada en la figura: P3.0 Speaker 1 ms
10. La situación existente en las patillas INT0 e INT1 es correcta según las recomendaciones del fabricante? Cuál sería su correcto conexionado?