현재 특정 주소의 SRAM 값을 확인한 다음 일치하는 경우 일부 C 코드를 실행하는 코드를 작성하려고합니다. 이것은 atmega32u4 AVR 칩에서 실행 중입니다. 여기에 지금까지 무엇을 가지고 :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
}
}
나는 내가 레지스터 R17 내부의 가치를 어떻게 조립 다시 C.까지 전환과에서 변수에 넣어 문제 부분을 파악하는 데 문제가 있습니다 C 코드?
코드 스니 펫 this을 찾았지만 어떻게 작동하는지 이해하지 못했거나이 방법에 접근하는 것이 가장 좋은 방법인지는 알 수 없습니다.
인라인 구문은 gcc와 같습니다. 도움이 될 수 있습니다 : http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html – dbrank0