Relación de Problemas I

Anuncio
Relación de Problemas I
352& 3523 *5$/
52) $1'5e6 52/'È1 $5$1'$
3
352& 3523 *5$/
1.
ž ,QJ 7pF ,QI 6LVWHPDV
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:
SAL0:
SAL1:
SAL2:
MOV R0,
MOV R1,
MOV R2,
DJNZ R2,
#55H
#85H
#0FFH
SAL2
DJNZ R1,
SAL1
DJNZ R0,
SAL0
; Se carga el Registro R0 con #55H
; Se carga el Registro R1 con #85H
; Se carga el Registro R2 con #FFH
; Decrementa R2 y repite el bucle
; hasta que R2==0
; Decrementa R1 y repite el bucle
; hasta que R1==0. Por cada lazo de R1,
; se ejecuta FFH veces el bucle R2
; 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:40H4AH.
5.
Realizar el ejercicio anterior modificando la rutina de conversión. En esta ocasión:
•
•
6.
Conversión de caracteres ASCII a números hexadecimales.
Conversión de números hexadecimales a caracteres ASCII.
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
MOVC A, @A+PC
| A
| A
Õ ((A) + (DPTR)).
Õ ((A) + (PC)).
Ejemplo: Acceso sobre una tabla de 4 datos.
...
90H
91H
92H
93H
...
MOV A,
#01H
CALL
Dir. Rutina
....
....
A0H
A1H
A2H
A3H
A4H
A5H
A6H
...
INC A
MOVC A,@A+PC
RET
DATO 1
DATO 2
DATO 3
DATO 4
...
MOV
CALL
A,
TABLA
TABLA: INC
MOVC
RET
DATO1
DATO2
DATO3
DATO4
#01H
A
A,@A+PC
MAPA MEMORIA CÓDIGO
352& 3523 *5$/
3URI $QGUpV 5ROGiQ $UDQGD
352& 3523 *5$/
7.
Dada la siguiente tabla de direccionamientos explicar las diferencias entre ellos.
<byte>
<byte>
<byte>
<byte>
8.
ž ,QJ 7pF ,QI 6LVWHPDV
Direc
@Ri
Ri
# data
Direccionamiento directo.
Direccionamiento indirecto a través de los registros R0 y R1.
Direccionamiento por registro.
Direccionamiento inmediato. Constante de 8 o 16 bits.
Rellenar la tabla de operaciones aritméticas siguiendo el patrón propuesto en la primera línea.
Nemónico
ADD A, <byte>
ADDC A, <byte>
SUBB A, <byte>
INC A
INC <byte>
INC DPTR
DEC A
DEC <byte>
MUL AB
DIV AB
Operación
A=A+ <byte>
Dir
Modos de direccionamiento
Ind
Reg
Inm
√
√
√
√
Ciclos de
Ejecución
1
C
Flags afectados
OV
AC
√
√
√
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
ANL A, <byte>
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
Operación
A=A & <byte>
Dir
Modos de direccionamiento
Ind
Reg
Inm
√
√
√
√
Ciclos de
Ejecución
1
C
Flags afectados
OV
AC
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.
2.
3.
4.
MOV 25H, #46H
MOV R0, #25H Y MOV @R0, #46H
MOV 85H, #3Ah
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:
352& 3523 *5$/
3URI $QGUpV 5ROGiQ $UDQGD
352& 3523 *5$/
ž ,QJ 7pF ,QI 6LVWHPDV
Registro
7 6 5 4 32 1 0
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.
2.
3.
4.
5.
6.
7.
8.
9.
¿ 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 ?
¿ 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?
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.
Describir una rutina en ensamblador que encienda/apague cada uno de los LED de la ESTACION de D
Riego.
Describir una rutina que permita detectar y reconocer la pulsación de una tecla del teclado 4·4
conectado directamente al P1.
Describir una rutina que permita representar 4 números BCD en cada uno de los 7 Segmentos
contenidos en el sistema.
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.
Realizar un programa en ensamblador que represente en pantalla las 4 últimas teclas pulsadas.
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
352& 3523 *5$/
3URI $QGUpV 5ROGiQ $UDQGD
352& 3523 *5$/
ž ,QJ 7pF ,QI 6LVWHPDV
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 ?
352& 3523 *5$/
3URI $QGUpV 5ROGiQ $UDQGD
Descargar