After answering my previous question correctly I'm getting all sorts of errors when trying to compile the following program:
I'm completely new to both assembly and the arduino IDE so I apologise in advance for any basic errors.
sketch.ino:
#include "blink.S"
extern void blink();
void setup() {
// put your setup code here, to run once:
blink();
}
void loop() {
// put your main code here, to run repeatedly:
}
blink.S file:
#define __SFR_OFFSET 0
#include <avr/io.h>
.section .text
ldi r18, 0x20 ; loading 0x20 = 00100000 into register r18
out DDRB, r18 ; making pin 5 of port B an output
mov r16, r18 ; copy mask 00100000 also to r16
loop: out PORTB, r16 ; switch on or off the pins of port B
; according to bit pattern in r16
ldi r17, 82 ; 1000ms delay, see below
outer_delay:
clr r1
middle_delay:
clr r2
inner_delay:
dec r2 ; 1 clock tick
brne inner_delay ; 2 clock ticks when z!=0, 1 tick when z=0.
dec r1 ; when this line is reached, about
; 256*3 = 768 ticks have been consumed since inner_delay.
brne middle_delay ;
dec r17 ; when this line is reached, about
; 256*256*3 = 196608 ticks have been
; consumed since middle delay.
brne outer_delay
eor r16,r18 ; invert bit 5 in r16 using exclusive or.
rjmp loop ; jump back to loop.
#include "blink.S"
.