Calculadoras

Anuncio
Escuela Técnica Superior de Ingenieros Industriales
I d
i l I d
Calculadoras
Sexto Curso E.T.S.I.I.
Convocatoria ORDINARIA. Abril 2003
Datos Personales
SOLUCIÓN DEL EXAMEN
Nombre:
Primer Apellido:
Segundo Apellido:
DNI y firma:
Calificación
Pregunta Puntuación Pregunta Puntuación
Nº. 1
1.5
Nº. 6
Nº. 2
1.5
Nº. 7
Nº. 3
2.0
Nº. 8
Nº. 4
Nº. 9
Nº. 5
Nº. 10
Revisado
SI
Calificación Final:
5.0
Las Palmas de Gran Canaria a 7 de Abril de 2003
i l
Convocatoria Ordinaria
Calculadoras.
Abril 2003
Pregunta 1. (1.5 Ptos.)
1.
2.
3.
4.
5.
6.
7.
Responder brevemente a las siguientes cuestiones:
En cualquiera de los casos se termina de ejecutar la instrucción en curso y posteriormente
se atiende la interrupción.
El recurso que maneja el programa de arranque en Modo Bootstrap es el puerto serie
asíncrono para poder comunicarse con el PC. Lo maneja mediante interrupciones ya que
aún cuando estamos ejecutando nuestro programa puede responder a los diferentes
comandos que le enviamos a través del puerto serie.
El Pulse Accumulator se desborda cada 256 pulsos y la frecuencia mínima de un pulso
generado con el Output Compare es la correspondiente a 65536 ciclos de E, lo que da un
semiperiodo de 32,768ms. Luego el tiempo máximo de desbordamiento sería de 256 *
32,768 * 2 = 16,8 segundos.
No entró en el examen.
Los dos valores son posibles debido a que cada uno de ellos tiene significado durante un
tiempo determinado. Así, MODA sólo tiene significado durante el RESET y LIR el resto del
tiempo.
No tiene sentido, ya que el flag STAF corresponde al flanco recibido por la señal STRA,
que no interviene para nada en este protocolo.
La instrucción ADDM $0012,X ocupa tres bytes, uno para el código de operación y dos
para el Offset. Se ejecuta en 7 ciclos que serían:
- Ciclo de Fetch
- Ciclo de Lectura del Offset (parte alta)
- Ciclo de Lectura del Offset (parte baja)
- Ciclo de Cálculo de la dirección efectiva
- Ciclo de lectura del primer dato
- Ciclo de lectura del segundo dato y de suma
- Ciclo de almacenamiento del resultado
Pregunta 2. (1.5 Ptos.)
El código de la rutina sería:
Etiqueta
Nemónico
HNDSHK
BRCLR
STAA
BCLR
BRSET
BSET
RTS
, Operando
PTOA,X $01 *
PTOB,X
PTOA,X $10
PTOA,X $01 *
PTOA,X $10
Comentario
; Esperamos poder enviar dato (ACK = 1)
; Sacamos dato por puerto B
; Sacamos STROBE a nivel bajo
; Esperamos mientras no responda la impresora (ACK = 1).
; Desactivamos STROBE y salimos
1
Solución
Convocatoria Ordinaria
Calculadoras.
Abril 2003
Pregunta 3. (2.5 Ptos.)
1. El conexionado del sistema es el que se muestra a continuación:
2. Programa en ensamblador:
Para implementar el programa se ha utilizado el IC3 para detectar los envases. Con esto
hacemos: 1) Incrementamos contador de envases; 2) Activamos la interrupción en tiempo real
para poder calcular el retardo de 2,5 segundos que necesitamos para activar el actuador POT.
El programa principal se dedicará a realizar el refresco de los displays. Para obtener el retardo
de 2,5 segundos usamos la interrupción en tiempo real cada 32,768 ms, lo que nos da un
número total de interrupciones de 76.
2
Solución
Convocatoria Ordinaria
Etiqueta
CONT
D0
D1
LOOP
Calculadoras.
Nemónico
ORG
FDB
, Operando
$FFFE
$F000
Comentario
; Vector de RESET del sistema.
ORG
FDB
$FFEA
#RSIIC3
; Vector de interrupción de IC3
ORG
FDB
$FFF0
#RSIRTI
; Vector de interrupción de la RTI
ORG
RMB
RMB
RMB
$0000
1
1
1
ORG
LDS
LDX
LDAA
STAA
CLR
LDAA
STAA
STAA
STAA
$F000
#$007F
#$1000
#$FF
DDRC,X
PTOC,X
#$02
TCTL2,X
TFLG1,X
TMSK1,X
; Programamos PTOC de salida
; y borramos PTOC.
LDAA
STAA
CLR
CLR
CLR
LDAA
ORA
STAA
STAA
BSR
LDAA
ORA
STAA
BSR
BRA
#$03
PACTL,X
CONT
D0
D1
D0
#$10
PTOB
TMSK1,X
DEL1MS
D1
#$20
PTOB
DEL1MS
LOOP
; Programación de la RTI cada 32,768 ms
; Borramos contador de RTI
; Borramos Display 0
; Borramos Display 1
; Cargamos display 0
; y activamos el display 0
; Sacamos por display 0
; Habilitamos interrupción por IC3
; Retardo de 1 milisegundo
; Cargamos display 1
; y activamos el display 1
; Sacamos por display 1
; Retardo de 1 milisegundo
* Rutina de interrupción para IC3
RTIIC3
BSET
TMSK2,X $40
LDAA
D0
INCA
CMPA
#$0A
BEQ
CLRD0
STAA
D0
BRA
ERTIIC3
CLRD0
CLR
D0
LDAA
D1
INCA
CMPA
#$0A
BEQ
CLRD1
STAA
D1
BRA
ERTIIC3
CLRD1
CLR
D1
ERTIIC3
BCLR
TFLG1,X $FE
RTI
Abril 2003
; Contador de RTI contados
; Display 0
; Display 1
; Almacenamiento del programa al comienzo de la EPROM.
; Programamos IC3 por flanco de bajada
; Borramos flag de IC3
; Habilitamos interrupción IC3
; Activamos la interrupción RTI
; Cojemos D0
; y lo incrementamos.
; Comparamos a ver si ya ha llegado a “A”
; Si ha llegado, salimos y seguimos con D1.
; En caso contrario lo almacenamos y
; salimos de la rutina.
; Borramos D0 y hacemos el mismo proceso con
; D1.
; Borramos el flag y salimos.
3
Solución
Convocatoria Ordinaria
Calculadoras.
* Rutina de servicio de la interrupción RTI
RSIRTI
LDAA
CONT
INCA
CMPA
#72
BEQ
POT
STAA
CONT
BRA
ERSIRTI
POT
BSET
PORTC,X $01
BSR
DEL100US
BCLR
PORTC,X $01
BCLR
TMSK2,X $40
CLR
CONT
BCLR
TFLG2,X $BF
RTI
* Rutina de retardo de 1ms
DEL1MS
LDY
L1
DEY
BNE
RTS
* Rutina de retardo de 100us
DEL100US
LDY
L2
DEY
BNE
RTS
END
Abril 2003
; Cargamos el contador de 32,768 ms.
; Incrementamos el contador
; y lo comparamos con 72.
; Si ha llegado a 72, actuamos sobre POT.
; En caso contrario lo depositamos en CONT
; y salimos.
; Ponemos POT a nivel alto
; durante 100 microsegundos.
; Y lo volvemos a poner a 0.
; deshabilitamos la RTI.
; Borramos el contador para la siguiente vez.
; Borramos el flag y salimos.
#286
L1
#286
L2
4
Solución
Descargar