#pragma GCC optimize (-O0)
#include "ArduinoTrace.h"
byte count;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
asm volatile(
//"lds r16,0x2A \n"
"in r16,0x0A \n"
"ori r16,0x54 \n"
//"sts 0x2A,r16 \n"
"out 0x0A,r16 \n"
);
asm volatile(
// "lds r16,0x24 \n"
// "ori r16,0x01 \n"
// "sts 0x24,r16 \n"
"sbi 0x04,0 \n"
);
}
void loop() {
// put your main code here, to run repeatedly:
if(bitRead(count,0)==1){
asm volatile(
// "lds r16,0x2B \n"
// "ori r16,0x04 \n"
// "sts 0x2B,r16 \n"
"sbi 0x0B,2 \n"
);
}
else{
asm volatile(
// "lds r16,0x2B \n"
// "andi r16,~0x04 \n"
// "sts 0x2B,r16 \n"
"cbi 0x0B,2 \n"
);
}
if(bitRead(count,1)==1){
asm volatile(
// "lds r16,0x2B \n"
// "ori r16,0x10 \n"
// "sts 0x2B,r16 \n"
"sbi 0x0B,4 \n"
);
}
else{
asm volatile(
// "lds r16,0x2B \n"
// "andi r16,~0x10 \n"
// "sts 0x2B,r16 \n"
"cbi 0x0B,4 \n"
);
}
if(bitRead(count,2)==1){
asm volatile(
// "lds r16,0x2B \n"
// "ori r16,0x40 \n"
// "sts 0x2B,r16 \n"
"sbi 0x0B,6 \n"
);
}
else{
asm volatile(
// "lds r16,0x2B \n"
// "andi r16,~0x40 \n"
// "sts 0x2B,r16 \n"
"cbi 0x0B,6 \n"
);
}
if(bitRead(count,3)==1){
asm volatile(
// "lds r16,0x25 \n"
// "ori r16,0x01 \n"
// "sts 0x25,r16 \n"
"sbi 0x05,0 \n"
);
}
else{
asm volatile(
// "lds r16,0x25 \n"
// "andi r16,~0x01 \n"
// "sts 0x25,r16 \n"
"cbi 0x05,0 \n"
);
}
DUMP(count);
if(count<15){
count++;
}
else{
count=0;
}
delay(1000);
}