Hallo, ich habe ein C Programm mit eingebundenen Assembler Dateien geschrieben. Eine Interruptroutine ist in Assembler verfasst. Diese änder den Wert im Register R18. Nun möchte ich in meinem Hauptprogramm (in C) dieses Register auslesen und an eine andere Funktion übergeben. Doch wie kann ich in C direkt auf das Register zugreifen? Vielen Dank.
r18 ist unpraktisch, da es zu den Arbeitsregistern des Compilers gehört. Du musst ein Register fest an eine Variable binden, wie das geht, steht hier: http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_regbind (Ich gehe mal von AVR-GCC aus.) Sinnvollerweise benutzt man dafür Register ab r2 aufsteigend, das ergibt die geringste Kollisionswahrscheinlichkeit mit der normalen Compilernutzung.
Dankeschön! Ich hatte die FAQs schon überflogen und ich hab heute auch noch gesehen, dass es im AVR-GCC Tutorial ähnlich erklärt wird. Ich hätte wohl nicht gleich einen Beitrag dazu schreiben sollen sondern erst denken ...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.