我目前正在尝试编写一些代码来检查某个地址处 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 代码中的变量中?
我确实找到了这个代码片段,但是我不太明白它是如何工作的,或者这是否是解决这个问题的最佳方法。