Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicio Simulación
Ejercicio Simulación
1.
Se desea adaptar un teclado hexadecimal al puerto A de una VIA. Los pines PA7-
4generan los códigos de exploración, mientras que, por los pines PA3-0, se recibirán
los códigos de la tecla pulsada. Supóngase que la línea CA1 recibe un flanco cada vez
que se detecta la pulsación de una tecla.
1) Configure el TIMER1 de la VIA para que genere una interrupción cada 1ms teniendo
en cuenta que la frecuencia de reloj de la misma es de 1Mhz.
Ahora bien, las filas se conectan al puerto de entrada de algún dispositivo tipo VIA y
sobre las que se han situado resistencias de “pull-up” que producen “1's” cuando no
hay ningún pulsador presionado. Las cuatro columnas se conectan a un puerto de
salida de algún dispositivo tipo VIA y sobre las que hay que generar una secuencia de
exploración periódica en la que, alternativamente, cada columna va disponer de un 0
lógico mientras que las restantes estarán a 1 lógico.
La pulsación de una tecla se reconoce cuando existe algún 0 en una fila. Atendiendo
a la fila que recoge el 0 y a la posición del 0 en la secuencia de exploración, se
determina la tecla pulsada.
MOVE.W #1000,D0
MOVE.B D0,T1CL
LSR.W #8,D0
RTS
2) Se supone que las columnas A1,A2,A3 y A4 se han conectado a los pines PA7:4
respectivamente, y que los pines B4:1 se han conectado a los pines PA3:0. La
configuración de estos pines requiere escribir $F0 en DDRA. Se utilizará una variable
ref, para generar la secuencia de exploración. Dicha variable se inicializa a 01110111
en binario y su contenido se rota en cada ejecución de la rutina de excepción. El
autovector 2 ocupa la dirección $68 de la memoria principal.
ORG $68
DC.L int
ORG $1000
ROR.B ref
RTE
3) Como paso previo vamos a proceder a la rutina de excepción, se recuerda que el
puerto A debe haberse configurado como entrada y, por el modo de funcionamiento
descrito, conviene configurar el modo latch que está controlado por el pin CA1.
ORG $68
DC.L int
ORG $1000
Main:
ORI.B #1,ACR ;Pone a 1 el bit ACR[0] que activa el modo latch del puerto
Int: MOVE.B TICL,D0 ;Borra el flag de interrupción
BSR convierte_tecla
MOVE.B Ref,ORA
RTE
4) La rutina de excepción convierte la tecla, cual puede construirse a partir de una tabla
que contiene los códigos de exploración que se generan para cada tecla pulsada.
Procediendo a una búsqueda en dicha tabla, la posición o el índice de la primera
coincidencia servirá como código hexadecimal. Por ejemplo, si el teclado tiene los
pulsadores que se muestran en la fotografía previa, los códigos de exploración y sus
correspondientes hexadecimales podrían ser:
0 1011 1110 0
1 0111 1101 1
2 1011 1101 2
3 1101 1101 3
4 0111 1011 4
5 1011 1011 5
6 1101 1011 6
7 0111 0111 7
8 1011 0111 8
9 1101 0111 9
MOVEA.L #tabla_codigos,A0
BEQ final
ADD.B #1,D1
BRA Bucle
Final: RTS