Задержка мигания светодиодов MIPS и PIC32

LA $t1, TRISE
LI $t2, 0x0000
SW $t2, 0($t1)

LA $t1, TRISD
LI $t2, 0xFFFF
SW $t2, 0($t1)

LI $t8, 0b0000000001

LA $t1, PORTE
LA $t2, PORTD

LI $t7, 0x2000

Loop:
SW $t8, 0($t1)
SLL $t8,$t8,1
JAL determinedelay
NOP
SW $t8, 0($t1)
SLL $t8,$t8,1
JAL determinedelay
NOP
SW $t8, 0($t1)
SLL $t8,$t8,1
JAL determinedelay
NOP
SW $t8, 0($t1)
SLL $t8,$t8,1
SW $t8, 0($t1)
SLL $t8,$t8,1
SW $t8, 0($t1)
SLL $t8,$t8,1
SW $t8, 0($t1)
SLL $t8,$t8,1
SW $t8, 0($t1)

SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
SRL $t8,$t8,1
SW $t8, 0($t1)
JAL Loop
NOP  

determinedelay:
LI $t7, 0x2000
LW $t4,0($t2)
SRL $t4,$t4,8

mydelay:
ADDI $t7,$t7,-1
BGEZ $t7, mydelay
NOP
JR $ra
NOP

Этот код должен включать светодиод, перемещаться влево, включать другой, перемещаться влево, добираться до дальнего левого конца полосы, повторять тот же процесс, идя направо, и так далее в бесконечном цикле.

Я считаю, что моя часть кода делает это правильно, но у меня проблемы с задержкой. В конечном счете, полная задержка должна зависеть от входов переключателя, но в настоящее время я просто пытаюсь заставить ее работать с постоянной установленной задержкой.

Когда я запускаю программу, с оборудованием ничего не происходит.


person rjmitty1000    schedule 10.03.2017    source источник


Ответы (1)


Прогуляйтесь, прежде чем пытаться бежать. Напишите код для включения одного светодиода.

Когда у вас все заработает, напишите код, который будет включать и выключать этот светодиод.

Когда у вас все получится, напишите код, чтобы все светодиоды на полосе включались и выключались.

person markgz    schedule 10.03.2017