Ejercicios recomendados E/S EJERCICIO 4 Apartado A-1) Direcciones Selección ROM (16Kx8) $000000-$003FFF A23 REG_TEMP $800000 A23.A1.UDS* REG_CONTROL $800001 A23.A1.LDS* REG_ESTADO $800001 A23.A1.LDS* LUZ_ALARMA $800002 A23.A1.UDS* Ejercicios recomendados E/S EJERCICIO 4 Apartado A-1) AS* UDS* A23 NAND Direcciones Selección ROM (16Kx8) $000000-$003FFF A23 REG_TEMP $800000 A23.A1.UDS* REG_CONTROL $800001 A23.A1.LDS* REG_ESTADO $800001 A23.A1.LDS* LUZ_ALARMA $800002 A23.A1.UDS* ROM 8Kx8 SEL* A13-A1 A12-A0 D15-D8 D7-D0 AS* LDS* A23 NAND SEL* A13-A1 A12-A0 D7-D0 D7-D0 ROM 8Kx8 Ejercicios recomendados Apartado A-1) E/S EJERCICIO 4 Direcciones Selección ROM (16Kx8) $000000-$003FFF A23 REG_TEMP $800000 A23.A1.UDS* REG_CONTROL $800001 A23.A1.LDS* REG_ESTADO $800001 A23.A1.LDS* LUZ_ALARMA $800002 A23.A1.UDS* ALARMA* AS* A23 A1 UDS* NAND SAL* REG_TEMP N7-0 D15-D8 Ejercicios recomendados Apartado A-1) E/S EJERCICIO 4 Direcciones Selección ROM (16Kx8) $000000-$003FFF A23 REG_TEMP $800000 A23.A1.UDS* REG_CONTROL $800001 A23.A1.LDS* REG_ESTADO $800001 A23.A1.LDS* LUZ_ALARMA $800002 A23.A1.UDS* AS* A23 A1 LDS* REG_CONTROL NAND SEL* REG_ESTADO R/W* LEC/ESC* DAT7-0 AVERIA* AVERIA-RECONOCIDA* D7-D0 Ejercicios recomendados E/S Apartado A-1) EJERCICIO 4 Direcciones Selección ROM (16Kx8) $000000-$003FFF A23 REG_TEMP $800000 A23.A1.UDS* REG_CONTROL $800001 A23.A1.LDS* REG_ESTADO $800001 A23.A1.LDS* LUZ_ALARMA $800002 A23.A1.UDS* D8 AS* UDS* A23 A1 Alarma NAND SEL* Encender ----> move.b #$01,$800002 Apagar ----> move.b #$00,$800002 Ejercicios recomendados Apartado A-1) E/S EJERCICIO 4 reg_temp reg_control reg_estado luz_alarma encender calor frio parar equ equ equ equ equ equ equ equ $800000 $800001 $800001 $800002 $01 $40 $00 $80 inicio cmp.b blt cmp.b bgt #50,reg_temp calentar #60,reg_temp enfriar comprobar_averia btst beq #7,reg_estado inicio encender_alarma move.b bra #encender,luz_alarma encender_alarma calentar move.b bra #calor,reg_control temperatura_ok enfriar move.b #frio,reg_control temperatura_ok cmp.b bne move.b bra #55,reg_temp temperatura_ok #parar,reg_control comprobar_averia Ejercicios recomendados E/S EJERCICIO 4 Apartado A-2) “Controlador termostato” Alarma AVERIA* encender_alarma SEL* stop Ejercicios recomendados E/S Apartado B-1) 68000 IPL0* EJERCICIO 4 AVERIA* ALARMA* IPL2* IPL1* IPL0* 0 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 ALARMA* OR IPL1* AVERIA* IPL2* “1” VPA* FC0 FC1 FC2 NAND Ejercicios recomendados E/S EJERCICIO 4 Apartado B-2) Interrupción de nivel 1 25x4=100=$64 Interrupción de nivel 2 26x4=104=$68 A partir de la dirección $64 estará almacenada la dirección de comienzo de la rutina de tratamiento de las interrupciones autovectorizadas de nivel 1 producidas por la señal “alarma”. A partir de $68 estará la de las interrupciones de nivel 2 producidas por la señal “avería”. Ejercicios recomendados E/S EJERCICIO 4 Apartado B-2) *** PROGRAMA PRINCIPAL reg_temp reg_control luz_alarma encender calor frio parar equ equ equ equ equ equ equ $800000 $800001 $800002 $01 $40 $00 $80 inicio bra inicio * Bucle sin fin Ejercicios recomendados E/S EJERCICIO 4 Apartado B-2) *** RUTINA DE TRATAMIENTO DE “ALARMA” cmp.b bgt move.b bra enfriar move.b temperatura_ok cmp.b bne move.b rte #60,reg_temp enfriar * Si no salta es que hay que calentar #calor,reg_control temperatura_ok #frio,reg_control #55,reg_temp temperatura_ok #parar,reg_control *** RUTINA DE TRATAMIENTO DE “AVERIA” *Utilizamos el sistema del apartado A2 stop