DE1-SOC COMPUTER SYSTEM WITH NIOS II For Quartus II 15.0
CHK_KEY3:
movi r8, KEY3 /* code to check for KEY3 */
bne r4, r8, SHIFT
movi r5, NONE /* KEY3 sets rotation to no rotation */
stw r5, 0(r23)
SHIFT:
movi r5, NONE
stw r5, 0(r22) /* key press handled, so clear */
ldw r5, 0(r23) /* get shift direction */
movi r8, RIGHT
bne r5, r8, SHIFT_L
movi r5, 1 /* set r5 to the constant value 1 */
ror r6, r6, r5 /* rotate the displayed pattern right */
br END_INTERVAL_TIMER_ISR
SHIFT_L:
movi r8, LEFT
bne r5, r8, END_INTERVAL_TIMER_ISR
movi r5, 1 /* set r5 to the constant value 1 */
rol r6, r6, r5 /* shift left */
END_INTERVAL_TIMER_ISR:
stw r6, 0(r21) /* store HEX display pattern */
ldw ra, 0(sp) /* Restore registers */
ldw r4, 4(sp)
ldw r5, 8(sp)
ldw r6, 12(sp)
ldw r8, 16(sp)
ldw r10, 20(sp)
ldw r20, 24(sp)
ldw r21, 28(sp)
ldw r22, 32(sp)
ldw r23, 36(sp)
addi sp, sp, 40 /* release the reserved space on the stack */
ret
.end
Figure 18. Interrupt service routine for the interval timer (Part c).
Altera Corporation - University Program
2015
21