現在、特定のアドレスで 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 コードの変数に入れるにはどうすればよいですか?
私はこのコード スニペットを見つけましたが、それがどのように機能するか、またはこれが最善の方法であるかどうかはよくわかりません。