Patrick Fitzgerald
Published © GPL3+

ATmega32 40pin Minimum Development Board

Let's get to know the ATmega32 chip better by setting up a minimum development board. Assembly program MPlab X IDE.

AdvancedProtip3 hours278
ATmega32 40pin Minimum Development Board

Story

Read more

Code

newAsmTemplate.asm

Assembly x86
AVR assembly program for ATmega32
toggles IOs on PORTA
.include "m32def.inc"
    .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
    .cseg
    .org	0x00
    clr	    ledR		; clear led register to zero
    ldi	    mask,0xFF		; load the mask register 11111111
    out	    DDRA,mask		; set PORTA to all 8 bits OUT
start:
    out	    PORTA,ledR		; write led register to PORTA
    inc     ledR		; increment ledR from 0 to 255
    ldi     oLoopR,oVal		; initialize outer loop count
oLoop:
     ldi    iLoopRl,LOW(iVal)	; intialize inner loop count in inner
     ldi    iLoopRh,HIGH(iVal)	; loop high and low registers
iLoop:
    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

Credits

Patrick Fitzgerald

Patrick Fitzgerald

117 projects • 39 followers

Comments