//MACHINE CODE
#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"
// );
asm volatile
(
".word 0xB10A \n" //IN
".word 0x6500 \n" //ORI
".word 0xB90A" //OUT
);
asm volatile
(
".word 0x9A20 \n"
);
//DDRB=DDRB|(1<<PB0); //led2 output
}
void loop() {
// put your main code here, to run repeatedly:
if(bitRead(count,0)==1)
{ //0x0b = 11 en decimal
//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"
// );
asm volatile
(
".word 0x9A5C \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"
// );
asm volatile
(
".word 0x985C \n"
);
}
if(bitRead(count,1)==1)
{
//PORTD=PORTD|(1<<PD6); //bit 6 de PORTD en 1; led1 <-- 1
asm volatile
(
".word 0x9A5E \n"
);
}
else
{
//PORTD=PORTD&~(1<<PD6); //bit 6 de PORTD en 0; led1 <-- 0
asm volatile
(
".word 0x985E \n"
);
}
if(bitRead(count,2)==1)
{
//PORTB=PORTB|(1<<PB0); //bit 0 de PORTB en 1; led2 <-- 1
asm volatile
(
".word 0x9A28 \n"
);
}
else
{
//PORTB=PORTB&~(1<<PB0); //bit 0 de PORTB en 0; led2 <-- 0
asm volatile
(
".word 0x9828 \n"
);
}
DUMP(count);
if(count<7)
{
count++;
}
else
{
count=0;
}
delay(1000);
}