Patrick Fitzgerald
Created April 24, 2023 © GPL3+

Program ATtiny13 with AVRA Assembler on Linux

MicroChip makes avrasm2.exe assembler for Atmel AVR chips like the ATtiny. On Linux we can use AVRA assembler.

BeginnerProtip2 hours2

Things used in this project

Hardware components

artou attiny13 AVR development board
M5Stack ISP USBasp Programmer (Random Color)
M5Stack ISP USBasp Programmer (Random Color)

Software apps and online services

AVRA Assember for the Atmel AVR microcontroller family


Read more



Assembly x86
AVR assembly code
binary count on PORTB
oVal and iVal loops
.include ""
    .def	mask 	= r16	; mask register
    .def	ledR 	= r17	; led register
    .def	oLoopR 	= r18	; outer loop register
    .def	iLoopRl = r24	; inner loop register low
    .def	iLoopRh = r25	; inner loop register high
    .equ	oVal 	= 80	; outer loop value
    .equ	iVal 	= 800	; inner loop value
    .org	0x00
    clr	    ledR		; clear led register to zero
    ldi	    mask,0xFF		; load the mask register 11111111
    out	    DDRB,mask		; set PORTB to all 8 bits OUT
    out	    PORTB,ledR		; write led register to PORTB
    inc     ledR		; increment ledR from 0 to 255
    ldi     oLoopR,oVal		; initialize outer loop count
     ldi    iLoopRl,LOW(iVal)	; intialize inner loop count in inner
     ldi    iLoopRh,HIGH(iVal)	; loop high and low registers
    sbiw    iLoopRl,1	        ; decrement inner loop register
    brne    iLoop		; branch to iLoop if iLoop register != 0
    dec	    oLoopR		; decrement outer loop register
    brne    oLoop		; branch to oLoop if outer loop register != 0
    rjmp    start		; jump back to start


Patrick Fitzgerald

Patrick Fitzgerald

52 projects • 20 followers