Objetivo
- Aprender a realizar la programación del microcontrolador
Introducción
En este tutorial se va a mostrar la programación utilizando el programador USBASP y el software Extreme Burner.
Antes de comenzar es necesario asegurarse que el programador se encuentra instalado correctamente, para esto es necesari orevisar el administrador de dispositivos de windows y comprobar que no hallan errores, el problema mas común es que no se instalan los controladores para esto es necesario descargarlos e instalarlos.(ver link), dependiendo al versión de windows el proceso puede ser diferente, si se presenta algun recomiendo revisar como instalar controladores sin firma en la versión de windows correspondiente.
Conexión de Hardware
La conexión del programador al microconttrolador es muy sencilla, simplemente se deben conectar los pines de alimentación, tierra, RESET, SCK, MISO y MOSI del programador al microcontrolador, en las imagenes a continuación se muestran los pines que se deben conectar.
![]() |
Programador USBASP
![]() |
Pin Out USBASP
![]() |
Descripción de pines ATMEGA16
Programación en Extreme Burner
Al abrir el programa encontraremos la ventana que aparece a continuación, lo primero que se debe hacer es verificar que el software tenga selccionado el microcontrolador adecuado:

A continuación se abre el archivo .HEX que se desea programar en el microcontrolador (ver sección Atmel Studio), para este ejemplo se programará en el microcontrolador atmega16 un contador de 8 bits, la visualización se hará en el puerto A mediante unos leds con resistencias de 220 ohmios a tierra.
.org 0 ;posicion del vector de interrupción RESET
rjmp reset
reset:
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16 ; se carga la pila del microcontrolador
ldi r16,0xFF ; se carga el registro 16 con el valor binario 0b11111111 o 0xFF en hexadecimal
out DDRA,r16 ; se habilita el puerto A como salida
ldi r18,0x00 ; se carga el registro 18 con cero
loop:
out PORTA,r18 ; se sacan los datos del registro 18 al puerto A
inc r18 ; se incrementa en 1 el valor de r18, r18=r18+1
rcall retardo ; llamado a la subrutina retardo
rjmp loop ; reinicio de la secuencia
retardo:
ldi r16,0xFF ; r16=255
delay1:
ldi r17,0xFF ; r17=255
delay2:
dec r17 ; decrementa r17 en 1
brne delay2 ; si r17!=0 entonces salta a delay2
dec r16 ; decrementa r16
brne delay1 ; si r16!=0 entonces salta a delay1
ret ; retorno de subrutina

Después de seleccionar el código se procede a programar el microcontrolador, para esto se da click en el botón Write All".

Si todo se realizó correctamente deberá aparecer el mensaje "ALL TASKS COMPLETED SUCCESFULY"
