#pragma GCC optimize (-O0)
#include "ArduinoTrace.h"
volatile byte dato1;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//ToDo:--------------config---------------------------------
asm volatile(
"sbi 0x0B,2"
//pull up pulsador N/A 2 Verde, esto es porque el pin se inicia
//entrada
);
//____________________________________________________________________________
asm volatile(
"sbi 0x0B,7"
//pull up pulsador N/A 1 Rojo
);
//____________________________________________________________________________
asm volatile(
"sbi 0x08, 5"
//pull up pulsador N/A 3 Azul
);
//____________________________________________________________________________
asm volatile(
"sbi 0x0A,4"
//estableciendo pin 4 como salida
);
//____________________________________________________________________________
asm volatile(
"sbi 0x0A, 6"
//estableciendo pin 6 como salida al led verde
);
// ____________________________________________________________________________
asm volatile(
"sbi 0x04,0"
//estableciendo pin 8 como salida al led rojo
);
//----------------------------------------------------
}
void loop() {
// put your main code here, to run repeatedly:
//ToDo:-------------red led----------------------------
asm volatile(
"in r25, 0x09 \n"
"andi r25, 0x80 \n" //aisla pin 7
"sts dato1,r25" //se utiliza sts porque las variables se almacenan en memoria
);
if(dato1==0){
asm volatile(
"sbi 0x05,0"
//envia un 1 al pin 8 y acciona el led
);
}else{
asm volatile(
"cbi 0x05,0" //envia un 0 al pin 8 y apaga el led
);
}
//-----------------------------------------------------
//ToDo:-------------green led--------------------------
asm volatile(
"in r16, 0x09 \n"
"andi r16, 0x04 \n" //Aislando pin 2
"sts dato1, r16"
);
if (dato1==0){ //El pulsador se conecta a tierra y envia un 0 cuando se pulsa
asm volatile(
"sbi 0x0B,6"
//envia un 1 al pin 6 y acciona el led
);
}
else{//el pulsador se deselecciona y envia 1 cuando se despulsa
asm volatile(
"cbi 0x0B, 6"
//envia un 0 al pin 6 y apaga el led
);
}
//-----------------------------------------------------
//ToDo:-------------blue led---------------------------
asm volatile(
"in r29, 0x06 \n"
"andi r29, 0x20 \n" // aisla bit 5 del puerto C
"sts dato1, r29" //las variables se almacenan en memoria >256 (sts)
);
//-----------------------------------------------------
if (dato1==0){
asm volatile(
"sbi 0x0B,4"//envia un 1 al pin 4 y apaga el led
);
}else{
asm volatile(
"cbi 0x0B,4" //envia un 0 al pin 4 y apaga el led
);
}
}