MIPS 和 PIC32 LED 闪烁延迟
MIPS and PIC32 LED blink delay
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
这段代码应该打开一个 LED,向左移动,打开另一个,向左移动,到达条带的最左端,向右重复相同的过程,依此类推无限循环。
我相信我的代码部分正确地做到了这一点,但我在延迟方面遇到了麻烦。最终,完整的延迟将需要依赖于开关输入,但我目前只是试图让它以一致的设置延迟工作。
当我运行程序时,硬件上没有任何反应。
在尝试 运行 之前先步行。编写代码以打开单个 LED。
当你成功后,编写代码使 LED 闪烁。
当你完成这项工作后,编写代码使条带中的所有 LED 闪烁。
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
这段代码应该打开一个 LED,向左移动,打开另一个,向左移动,到达条带的最左端,向右重复相同的过程,依此类推无限循环。
我相信我的代码部分正确地做到了这一点,但我在延迟方面遇到了麻烦。最终,完整的延迟将需要依赖于开关输入,但我目前只是试图让它以一致的设置延迟工作。
当我运行程序时,硬件上没有任何反应。
在尝试 运行 之前先步行。编写代码以打开单个 LED。
当你成功后,编写代码使 LED 闪烁。
当你完成这项工作后,编写代码使条带中的所有 LED 闪烁。