首页 > 解决方案 > MIPS - 创建一个延迟,将 80MHz 处理器“调节”到 1Hz

问题描述

我们的任务是在“运行灯”程序中实现延迟。我的意思是,我们有一个以 80MHz 运行的处理器,但它应该只以 1Hz 的频率输出光。所以我想实现 80.000 次操作的延迟,这样每 80.001 次都会是灯。这是我的尝试:

delay80M:
    li a0, 5000
    loopdelay:
    addi    a0, a0, -1
    nop
    addiu   sp, sp, -8 // Beispiel zur Stackverwendung (hier eigentlich nicht erforderlich)
    nop
    sw      s0, (sp)
    nop
    sw      s1,4(sp)
    nop
    lw      s1,4(sp)
    nop
    lw      s0, (sp)
    nop
    addiu   sp, sp, 8
    bgtz    a0, loopdelay
    jr      ra
    nop

然而,我不太确定这是否是最佳方式。在此先感谢,祝您有美好的一天:)

标签: mipsdelay

解决方案


您的方法看起来可行,但会浪费很多电量。如果您可以设置一个每秒中断 CPU 一次的定时器,您可以使用 MIPSWAIT指令停止处理器,直到收到定时器中断。


推荐阅读