В настоящее время я пытаюсь написать некоторый код, который проверяет значение SRAM по определенному адресу, а затем выполняет некоторый код C, если он совпадает. Это работает на чипе atmega32u4 AVR. Вот что у меня есть до сих пор:
volatile char a = 0;
void setup(){
}
void loop(){
asm(
"LDI r16,77\n" //load value 77 into r16
"STS 0x0160,r16\n" //copy r16 value into RAM location 0x0160
"LDS r17,0x0160\n" //copy value of RAM location 0x0160 into register r17
//some code to copy value r17 to char a?
);
if(a == 77){
//do something
}
}
У меня возникли проблемы с определением той части, где я перехожу от ассемблера обратно к C. Как мне получить значение внутри регистра r17 и поместить его в переменную в коде C?
Я нашел этот фрагмент кода, но не Я не совсем понимаю, как это работает, или это лучший способ подойти к этому.