import array as arr
registros = arr.array('i',[
0x40014000, # IO_BANK0_BASE
0xd0000000 # SIO_BASE
])
@micropython.asm_thumb
def blink(r0):
b(START)
label(config_led)
ldr(r1, [r0, 0])
mov(r2, 5) # Function 5, 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]) # 0x24 GPIO output enable
bx(lr)
label(delay)
mov(r3, 1)
lsl(r3, r3, 25) # Número muy grande
label(loop)
sub (r3, 1) # resta 1 del registro r0
bne (loop)
bx(lr)
label(led_on)
ldr(r1, [r0, 4]) # dirección base de SIO
mov(r2, 1) # carga 1 para GPIO0
str(r2, [r1, 0x14]) # 0x14 GPIO output value set
bx(lr)
label(led_off)
ldr(r1, [r0, 4]) # dirección base de SIO
mov(r2, 1) # carga 1 para GPIO0
str(r2, [r1, 0x18]) # 0x18 GPIO output value clear
bx(lr)
label(START)
bl(config_led)
label(WHILE1)
bl(led_on)
bl(delay) # Espera un tiempo significativo
bl(led_off) # Apaga un LED
bl(delay) # Espera un tiempo significativo
b(WHILE1)
blink(registros)