Proyecto 2 - Led intermitente

El proyecto consiste en hacer parpadear (encender y apagar) el led conectado al pin 12 de la Arduino UNO.

Esquema físico del proyecto:

Esquema del proyecto

Programa en ensamblador AVR:

;
; LedIntermitente.asm
;

.cseg

	; configura el pin 4 del puerto B como salida (pin 12 de la Arduino)
	ldi	r16, 0b00010000
	out	DDRB, r16

loop:
	; activa el pin 4 del puerto B (enciende el led)
	sbi	PORTB, 4
	; llama al método "delay" (espera 1 segundo)
	call	delay
	; desactiva el pin 4 del puerto B (apaga el led)
	cbi	PORTB, 4
	; llama al método "delay" (espera 1 segundo)
	call	delay
	; repite el proceso
	jmp	loop

; método "delay" (espera 1 segundo aproximadamente)
delay:
	push	r16
	push	r17
	push	r18
	push	r19

	ldi	r16,3		; itera 3.000.000 de veces
	ldi	r17,100		; ~1.0s at 16Mhz
	ldi	r18,100		
	ldi	r19,100		
repite:
	dec	r19
	tst	r19
	brne	repite
	ldi	r19,100

	dec	r18
	tst	r18
	brne	repite
	ldi	r18,100

	dec	r17
	tst	r17
	brne	repite
	ldi	r17,100

	dec	r16
	tst	r16
	brne	repite

	pop	r19
	pop	r18
	pop	r17
	pop	r16
	ret