The following blink program runs fine on my Attiny85 SparkFun Tiny AVR programmer board. It produces 5 short blinks and then stops.
It also works fine when I change r16 to any one of the registers r17, r21 or r29. But trying with any other register gives either no blink at all (r19, r20, r23, r25, r26, r27, r28, r31) or indefinite blinks (r18, r22, r24, r30).
Can anyone explain?
int ledPin = 0;
void setup() {
pinMode(ledPin, OUTPUT);
asm("ldi r16, 5");
asm("blink:");
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
asm("dec r16");
asm("brge blink");
}
void loop() {
}