import array as arr
regdata = arr.array('i', [
0x40014000, # IO_BANK0_BASE
0xd0000000 # Dirección base de SIO
])
@micropython.asm_thumb
def blink(r0):
# Configuración inicial
ldr(r1, [r0, 0])
mov(r2, 5) # Function 5, select SIO for GPIO0
str(r2, [r1, 0x04]) # GPIO0_CTRL
ldr(r1, [r0, 4]) # dirección base de SIO
mov(r2, 1) # carga 1 para GPIO0
str(r2, [r1, 0x24]) # GPIO output enable
b(parpadear)
label(parpadear)
# Encendido LED
ldr(r1, [r0, 4]) # Direccion base de SIO
mov(r2, 1) # Carga 1 para GPIO0
str(r2, [r1, 0x14]) # GPIO value set
# Retraso para encendido
mov(r3, 1)
lsl(r3, r3, 25)
label(loop1)
sub(r3, r3, 1)
bne(loop1)
# Apagado LED
ldr(r1, [r0, 4])
str(r2, [r1, 0x18]) # GPIO value clear
# Retraso para apagado
mov(r3, 1)
lsl(r3, r3, 25)
label(loop2)
sub(r3, r3, 1)
bne(loop2)
# Salto incondicional para repetir
b(parpadear)
blink(regdata)