37 lines
739 B
ArmAsm
37 lines
739 B
ArmAsm
.global init
|
|
.global blink
|
|
.global float_test
|
|
|
|
float_test:
|
|
ldi r25, 0b00111110
|
|
ldi r24, 0b00100000
|
|
ldi r23, 0b01000000
|
|
ldi r22, 0b00000000
|
|
clr r1
|
|
ret
|
|
|
|
blink:
|
|
ldi r20, 250
|
|
call delay_n_ms
|
|
ldi r20, 250
|
|
call delay_n_ms
|
|
|
|
sbi PORTD, LED_PORT ; high
|
|
ldi r20, 250
|
|
call delay_n_ms
|
|
cbi PORTD, LED_PORT ; low
|
|
|
|
ret
|
|
|
|
delay_n_ms:
|
|
; delay for ~r20 * 1ms. r20, r30, and r31 are modified.
|
|
; 1 ms ~ 16000 cycles at 16MHz.
|
|
; The basic loop takes about 5 cycles, so we need about 3000 loops.
|
|
ldi r31, 3000 >> 8 ; high byte of the 3000
|
|
ldi r30, 3000 & 255 ; low byte of the 3000
|
|
delaylp:
|
|
sbiw r30, 1 ; sub word r30 1
|
|
brne delaylp ; jne delaylp
|
|
subi r20, 1
|
|
brne delay_n_ms
|
|
ret |