92 lines
1.1 KiB
ArmAsm
92 lines
1.1 KiB
ArmAsm
.global __vectors
|
|
|
|
SREG = 0x3F
|
|
CCP = 0x3C
|
|
SMCR = 0x3A
|
|
CLKPSR = 0x36
|
|
TCCR0A = 0x2E
|
|
TCCR0B = 0x2D
|
|
TCCR0C = 0x2C
|
|
TIMSK0 = 0x2B
|
|
TIFR0 = 0x2A
|
|
OCR0AL = 0x26
|
|
PUEB = 0x03
|
|
PORTB = 0x02
|
|
DDRB = 0x01
|
|
PINB = 0x00
|
|
|
|
.section .bss
|
|
|
|
.comm int_ctr, 1
|
|
.comm i, 3
|
|
.comm lead1, 4
|
|
.comm lead2, 4
|
|
.comm lead3, 4
|
|
.comm bassosc, 2
|
|
.comm bassflange, 2
|
|
.comm arposc, 2
|
|
; leaves 10 bytes for stack
|
|
|
|
.section .text
|
|
|
|
__vectors:
|
|
clr r16
|
|
ldi r17, 0xD8
|
|
out PUEB, r16
|
|
rjmp main_cont
|
|
|
|
.type __vector_4, @function
|
|
__vector_4:
|
|
push r16
|
|
push r24
|
|
in r16, SREG
|
|
lds r24,int_ctr
|
|
subi r24,lo8(-(1))
|
|
andi r24,lo8(3)
|
|
sts int_ctr,r24
|
|
out SREG,r16
|
|
pop r24
|
|
pop r16
|
|
reti
|
|
.size __vector_4, .-__vector_4
|
|
|
|
main_cont:
|
|
out CCP, r17
|
|
out CLKPSR, r16
|
|
ldi r17, 5
|
|
out DDRB, r17
|
|
ldi r17, 0x81
|
|
out TCCR0A, r17
|
|
ldi r17, 0x09
|
|
out TCCR0B, r17
|
|
ldi r17, 1
|
|
out SMCR, r17
|
|
out TIMSK0, r17
|
|
sei
|
|
out TIFR0, r17
|
|
|
|
mainloop:
|
|
sleep
|
|
lds r17, int_ctr
|
|
tst r17
|
|
brne mainloop
|
|
|
|
sbi PORTB, 2
|
|
|
|
lds r17, i
|
|
lds r18, i+1
|
|
lds r19, i+2
|
|
|
|
subi r19, -1
|
|
sbci r18, 0
|
|
sbci r17, 0
|
|
|
|
sts i, r17
|
|
sts i+1, r18
|
|
sts i+2, r19
|
|
|
|
out OCR0AL, r18
|
|
|
|
cbi PORTB, 2
|
|
rjmp mainloop
|