; santa fe beacon sim
; stk500/attiny2313
; by renesis.
; for avrfreak.
; 2007.10.22
.set sample_count = 500
.include "tn2313def.inc"
.def lpm_in =r0
.def temp =r16
.def temp2 =r17
.def state =r18
.macro throb_it
ldi temp,(@0)
out ocr0a,temp
reti
.endmacro
.org $0
rjmp reset
reti
reti
reti
rjmp sample_out
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reset:
ldi temp,low(ramend)
out spl,temp
ldi temp,0b10000011
out tccr0a,temp
ldi temp,0b00000001
out tccr0b,temp
ser temp
out ocr0a,temp
ldi temp,0b00000000
out tccr1a,temp
ldi temp,0b00001101
out tccr1b,temp
ldi temp,high(sample_count)
out ocr1ah,temp
ldi temp,low(sample_count)
out ocr1al,temp
ldi temp,0b01000000
out timsk,temp
ser temp
out portb,temp
out ddrb,temp
clr state
sei
deathloop: rjmp deathloop
sample_out:
cpi state,127
brne not_end
clr state
not_end:
ldi ZH,high(2*throbtab)
ldi ZL,low(2*throbtab)
clr temp
add ZL,state
adc ZH,temp
lpm
out ocr0a,lpm_in
inc state
reti
throbtab:
.db 133,139,146,152,158,164,170,176,182,187,193,198,203,208,213,217,221,226,229,233,236,239,242,245,247,249,251,252,253,254,254,255,254,254,253,252,251,249,247,245,242,239,236,233,229,226,221,217,213,208,203,198,193,187,182,176,170,164,158,152,146,139,133,127,121,115,108,102,96,90,84,78,72,67,61,56,51,46,41,37,33,28,25,21,18,15,12,9,7,5,3,2,1,0,0,0,0,0,1,2,3,5,7,9,12,15,18,21,25,28,33,37,41,46,51,56,61,67,72,78,84,90,96,102,108,115,121,127