Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************
- * Enciende alternativamente, de uno en uno, todos los LEDS rojos.
- * Primero va hacia la izquierda comenzando por el LED 0. Cuando se
- * pulse el botón 1 la dirección del movimiento cambiará hacia la derecha
- * y cuando se pulse el botón 2 cambiará de nuevo a la izquierda.
- *******************************************************************/
- .global _start
- _start:
- movia r2, 0x10000000 /* carga base LEDS rojos */
- movia r3, 0x10000050 /* carga base botones(pushbuttons) */
- addi r6,r0,0x1 /* carga valor inicial LEDS */
- add r7, r7, r0 /* inicializa contador de los LEDs */
- addi r9,r0,0x12 /* carga la cte 18 (12 en hexadecimal) en r9, para el tope superior */
- LEFT:
- stwio r6,0(r2) /* Enciende el LED */
- slli r6, r6, 1 /* Mueve el LED a la izquierda */
- addi r7,r7,1 /* Aumenta el contador */
- ldwio r4, 0(r3) /* lee estado de los botones */
- addi r5, r0, 2 /* Carga el valor del Botón 1 en r5 */
- beq r4, r5, RIGHT /* Si está pulsado el Botón 1, se pasa al bucle de la derecha */
- beq r7,r9, RIGHT /* Si el contador llega al tope superior (18), cambia de dirección */
- addi r8,r0,0x50000 /* Inicializa el contador del retardo (El retardo óptimo es 0x50000) */
- RETARDO_L:
- subi r8, r8, 1
- beq r8, r0, LEFT
- br RETARDO_L /* Termina el retardo */
- br LEFT
- RIGHT:
- stwio r6,0(r2) /* Enciende el LED */
- srli r6,r6,1 /* Mueve el LED a la derecha */
- subi r7,r7,1 /* Disminuye el contador */
- ldwio r4, 0(r3) /* lee el estado de los botones */
- addi r5, r0, 4 /* Carga el valor del Botón 2 en r5 */
- beq r4, r5, LEFT /* Si está pulsado el Botón 2, se pasa al bucle de la izquierda */
- beq r7,r0,LEFT /* Si el contador llega al tope inferior (0), cambia de dirección */
- addi r8,r0,0x50000 /* Inicializa el contador del retardo (El retardo óptimo es 0x50000) */
- RETARDO_R:
- subi r8,r8,1
- beq r8, r0, RIGHT
- br RETARDO_R /* Termina el retardo */
- srli r6,r6,1 /* Mueve el LED a la derecha */
- subi r7,r7,1 /* Disminuye el contador */
- br RIGHT
- .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement