import time
from machine import Pin
# =====================================
# CONFIGURAÇÃO DOS LEDs
# =====================================
# Verde = FETCH
led_fetch = Pin(27, Pin.OUT)
# Amarelo = DECODE
led_decode = Pin(26, Pin.OUT)
# Vermelho = EXECUTE
led_execute = Pin(18, Pin.OUT)
def apagar_leds():
led_fetch.value(0)
led_decode.value(0)
led_execute.value(0)
programa = [
"LOAD R0 10",
"LOAD R1 5",
"ADD R0 R1",
"SUB R0 R1",
"MUL R0 R1",
"STORE R0 R2"
]
registradores = {
"R0": 0,
"R1": 0,
"R2": 0
}
pc = 0
while pc < len(programa):
print()
print("================================")
print("INÍCIO DO CICLO DA CPU")
print("================================")
apagar_leds()
led_fetch.value(1)
print()
print("🟢 FETCH")
print("PC =", pc)
instrucao = programa[pc]
print("Instrução:", instrucao)
time.sleep(1)
led_fetch.value(0)
apagar_leds()
led_decode.value(1)
print()
print("🟡 DECODE")
partes = instrucao.split()
comando = partes[0]
print("Comando:", comando)
print("Partes:", partes)
time.sleep(1)
led_decode.value(0)
apagar_leds()
led_execute.value(1)
print()
print("🔴 EXECUTE")
if comando == "LOAD":
registrador = partes[1]
valor = int(partes[2])
registradores[registrador] = valor
print("Carregando", valor, "em", registrador)
elif comando == "ADD":
r1 = partes[1]
r2 = partes[2]
registradores[r1] = (
registradores[r1] +
registradores[r2]
)
print("Somando", r1, "+", r2)
elif comando == "SUB":
r1 = partes[1]
r2 = partes[2]
registradores[r1] = (
registradores[r1] -
registradores[r2]
)
print("Subtraindo", r1, "-", r2)
elif comando == "MUL":
r1 = partes[1]
r2 = partes[2]
registradores[r1] = (
registradores[r1] *
registradores[r2]
)
print("Multiplicando", r1, "*", r2)
elif comando == "STORE":
origem = partes[1]
destino = partes[2]
registradores[destino] = registradores[origem]
print("Copiando", origem, "para", destino)
print()
print(" REGISTRADORES")
print("R0 =", registradores["R0"])
print("R1 =", registradores["R1"])
print("R2 =", registradores["R2"])
print()
print("================================")
time.sleep(1)
led_execute.value(0)
pc += 1
apagar_leds()
print()
print("================================")
print("PROGRAMA FINALIZADO")
print("================================")
print("R0 =", registradores["R0"])
print("R1 =", registradores["R1"])
print("R2 =", registradores["R2"])