Skip to content

Instantly share code, notes, and snippets.

@BobBurns
Created November 13, 2014 01:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BobBurns/2eed7dfdcae44c11d9e1 to your computer and use it in GitHub Desktop.
Save BobBurns/2eed7dfdcae44c11d9e1 to your computer and use it in GitHub Desktop.
assembly version of cylon eyes from Elliot Williams AVR Programming
;assembly version of Cylon Eyes p.60
;compile with gavrasm cylonEyes.asm
;
;--- set up ---
.device atmega168
.cseg
.org 0
.def delayH =r25
.def delayL =r24
.def led =r16
.def temp =r17
.equ dlp_init =2500 ; 2500 * 4 clock cycles = 10,000u = 100ms
;--- inits ---
ldi temp,0xff
out DDRB,temp
; need to setup stack
ldi temp,low(RAMEND)
out SPL,temp
ldi temp,high(RAMEND)
out SPH,temp
;--- main loop
lp:
ldi led,0x01
l_lp:
out PORTB,led
rcall delay
lsl led ;shift bits left until led == 0
brne l_lp
ldi led,0x80 ;0b1000000
r_lp:
out PORTB,led
rcall delay
lsr led
brne r_lp
rjmp lp
;--- delay subroutine
delay:
ldi delayH,high(dlp_init)
ldi delayL,low(dlp_init)
dlp: sbiw delayH:delayL,1
brne dlp
ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment