Advertisement
chof_machine

Sesion3.Ejercicio4

Mar 22nd, 2021
2,184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : Sesión 3. LED's, pulsadores e interruptores.
  3. *           Ejercicio 4.
  4. * Written by : Sofía Andújar Muñoz
  5. * Date       : 07/03/2021
  6. * Description: Vamos a hacer un programa que mediante el uso
  7. *           de LED's y pulsadores, encienda los LED's en fun-
  8. *           fución de los pulsadores.
  9. *-----------------------------------------------------------
  10.        ORG    $1000
  11.        
  12. RETARDO EQU 100 * Retardo de 1 segundo        
  13.        
  14. START:                
  15. RESET   MOVE.B #%00000000, $E00010 * Ponemos los LED's a 0
  16.         MOVE.B #0,D2 * Ponemos un 0 en D2 ya que es el registro que usaremos para cargar el estado de los LED's
  17. INICIO  MOVE.B #0,D1 * Ponemos en D1 un 0 que tendrá que ir de 0 a 7 continuamente
  18. BUCLE   MOVE.B $E00014, D0 * Cargamos el estado de los pulsadores en D0
  19.        BTST.L D1,D0 * Comprobamos si el bit D1 de los pulsadores vale cero
  20.        BEQ LED_ON * Si vale 0 quedará Z=1 (con lo que saltaremos)
  21. VOLVER  CMP.B #7,D1 * Si D1 vale 7 tenemos que devolver su valor a 0
  22.        BEQ INICIO * Volvemos a recorrer los 8 bits de los pulsadores
  23.        ADD.B #1,D1 * Sumamos un 1 a D1 hasta llegar a 7
  24.        JMP BUCLE
  25.      
  26. LED_ON  BSET.L D1,D2 * Ponemos a 1 el bit de D2 que marca D1
  27.        MOVE.B D2,$E00010 * Encendemos los LED's que marque D2
  28.         CMP.B #%11111111, D2 * Si es igual pondremos todos los bits a 0 en la siguiente ejecución
  29.         BEQ LED_OFF
  30.         JMP VOLVER
  31.        
  32. LED_OFF JSR SOLTARPUL
  33.         MOVE.B D1,-(A7) * Podría ahorrarme este paso puesto que se va a resetear el valor de D1, pero así practico
  34.         MOVE.B #RETARDO, D1 *
  35.         MOVE.L #23, D0 * Preparamos el retardo
  36.         TRAP #15 * Hacemos el retardo
  37.         MOVE.B (A7)+,D1
  38.         JMP RESET
  39.        
  40. SOLTARPUL MOVE.B $E00014,D0
  41.           BTST D1,D0
  42.           BEQ SOLTARPUL * Mientras sea 0 es que sigue pulsado y lo retenemos en el bucle hasta que suelte
  43.           RTS      
  44.  
  45.     SIMHALT             ; halt simulator
  46.  
  47.  
  48.     END    START        ; last line of source
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement