Created
November 13, 2014 01:08
-
-
Save BobBurns/2eed7dfdcae44c11d9e1 to your computer and use it in GitHub Desktop.
assembly version of cylon eyes from Elliot Williams AVR Programming
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;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