Example Application: Using LEDs and Switches

Connect PORTB to LEDS and PORTD to SWITCHES. LEDS will operate differently depending on what switch is pressed.

Tip: Copy the code from this document into Atmel Studio

; ***** Atmel STK500 LEDS and SWITCH demonstration
.include "8515def.inc"
.def Temp =r16             ; Temporary register
.def Delay =r17             ; Delay variable 1
.def Delay2 =r18           ; Delay variable 2
; ***** Initialization
RESET:
	ser	Temp
	out	DDRB,Temp		; Set PORTB to output
; **** Test input/output
LOOP:
	out	PORTB,temp	   ; Update LEDS
	sbis	PIND,0x00        ; If (Port D, pin0 == 0)
	inc	Temp               ; then count LEDS one down
	sbis	PIND,0x01        ; If (Port D, pin1 == 0)
	dec	Temp               ; then count LEDS one up
	sbis	PIND,0x02        ; If (Port D, pin2 == 0)
	ror	Temp               ; then rotate LEDS one right
	sbis	PIND,0x03        ; If (Port D, pin3 == 0)
	rol	Temp               ; then rotate LEDS one left
	sbis	PIND,0x04        ; If (Port D, pin4 == 0)
	com	Temp               ; then invert all LEDS
	sbis	PIND,0x05        ; If (Port D, pin5 == 0)
	neg	Temp               ; then invert all LEDS and add 1
	sbis	PIND,0x06        ; If (Port D, pin6 == 0)
	swap	Temp               ; then swap nibbles of LEDS
	; **** Now wait a while to make LED changes visible.
	DLY:
	dec	Delay
	brne	DLY
	dec	Delay2
	brne	DLY
	rjmp	LOOP              ; Repeat loop forever