Как сделать цикл в сборке NIOS II

Так что я пытаюсь добиться, чтобы светодиоды на моем микроконтроллере мигали взад и вперед с помощью петли. До сих пор я смог заставить светодиоды мигать справа налево, используя этот код

.equ LEDS, 0x10000010
.text
.global _start
_start: movia r2, LEDS
        movi r3, 0b10000000
        movi r4, 0x7FFF
        slli r4, r4, 3
        add r4, r4, r4
load: movi r5, 0b00000001
loop: stw r5, 0(r2)
      mov r6, r0
count: addi r6, r6, 1
      bne r6, r4, count
      beq r5, r3, load
      roli r5, r5, 1
      br loop

а также мигать слева направо, используя этот код

.equ LEDS, 0x10000010
.text
.global _start
_start: movia r2, LEDS
        movi r3, 0b00000001
        movi r4, 0x7FFF
        slli r4, r4, 3
        add r4, r4, r4
load: movi r5, 0b10000000
loop: stw r5, 0(r2)
      mov r6, r0
count: addi r6, r6, 1
      bne r6, r4, count
      beq r5, r3, load
      roli r5, r5, -1
      br loop

Беда, с которой я столкнулся, состоит в том, чтобы объединить их так, чтобы они мигали слева направо, а затем обратно справа налево в цикле. Нужно ли вносить изменения в регистры цикла или количество?

1 ответ

Решение

Текущий код разветвляется на load когда r5 равно r3, Вместо этого он должен перейти к другому набору кода. Другими словами, после перемещения справа налево перейдите к коду, который мигает светодиодом слева направо, и наоборот. Полученный код выглядит так:

.equ LEDS, 0x10000010
.text
.global _start
_start:  movia r2, LEDS
         movi  r4, 0x7FFF
         slli  r4, r4, 3
         add   r4, r4, r4

goleft:  movi  r3, 0b10000000
         movi  r5, 0b00000001
lloop:   stw   r5, 0(r2)
         mov   r6, r0
lcount:  addi  r6, r6, 1
         bne   r6, r4, lcount
         beq   r5, r3, goright
         roli  r5, r5, 1
         br    lloop

goright: movi  r3, 0b00000001
         movi  r5, 0b10000000
rloop:   stw   r5, 0(r2)
         mov   r6, r0
rcount:  addi  r6, r6, 1
         bne   r6, r4, rcount
         beq   r5, r3, goleft
         roli  r5, r5, -1
         br    rloop
Другие вопросы по тегам