#pragma GCC optimize (-O0)
#include "ArduinoTrace.h"
#include <avr/io.h>
//#include <avr/iom168.h>
byte count;
byte led0=4;
byte led1=6;
byte led2=8;
byte value;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//DDRD=DDRD|(1<<PD4)|(1<<PD6); //led0 output, led1 output
asm volatile
(
"lds r16,0x2A \n"
"ori r16,0x50 \n"
"sts 0x2A,r16"
);
//DDRB=DDRB|(1<<PB0); //led2 output
asm volatile
(
"lds r17,0x24 \n"
"ori r17,0x01 \n"
"sts 0x24,r17"
);
}
void loop() {
// put your main code here, to run repeatedly:
if(bitRead(count,0)==1)
{
//PORTD=PORTD|(1<<PD4); //bit 4 de PORTD en 1; led0 <-- 1
asm volatile
(
"lds r16,0x2B \n"
"ori r16,0x10 \n"
"sts 0x2B,r16 \n"
);
}
else
{
//PORTD=PORTD&~(1<<PD4); //bit 4 de PORTD en 0; led0 <-- 0
asm volatile
(
"lds r16,0x2B \n"
"andi r16,~0x10 \n"
"sts 0x2B,r16 \n"
);
}
if(bitRead(count,1)==1)
{
//PORTD=PORTD|(1<<PD6); //bit 6 de PORTD en 1; led1 <-- 1
asm volatile
(
"lds r16,0x2B \n"
"ori r16,0x40 \n"
"sts 0x2B,r16 \n"
);
}
else
{
//PORTD=PORTD&~(1<<PD6); //bit 6 de PORTD en 0; led1 <-- 0
asm volatile
(
"lds r16,0x2B \n"
"andi r16,~0x40 \n"
"sts 0x2B,r16 \n"
);
}
if(bitRead(count,2)==1)
{
//PORTB=PORTB|(1<<PB0); //bit 0 de PORTB en 1; led2 <-- 1
asm volatile
(
"lds r16,0x25 \n"
"ori r16,0x01 \n"
"sts 0x25,r16 \n"
);
}
else
{
//PORTB=PORTB&~(1<<PB0); //bit 0 de PORTB en 0; led2 <-- 0
asm volatile
(
"lds r17,0x25 \n"
"andi r17,~0x01 \n"
"sts 0x25,r17 \n"
);
}
DUMP(count);
if(count<7)
{
count++;
}
else
{
count=0;
}
delay(500);
}