Hi, There are a couple of ways to use i/o address in assymbly. Below i used a some:
#define _EEARL_ "0x1E" uint8_t portFSReadByte(unsigned char * pAddress) { uint8_t result; asm volatile ( \ "in r26, __SREG__ \n\t" "cli \n\t" "out %2, %A0 \n\t" "out "_EEARL_", %B0 \n\t" "sbi __EECR__, 0 \n\t" "in %A0, 0x1D \n\t" "out __SREG__, r26 \n\t" "" :"=r" (result) :"0" (pAddress), "I" (_SFR_IO_ADDR(EEARH)) : "r26" ); return result; } (1) You can define a constant, like i did for _EEARL_ This is nice but no so portable. (2) You can use the asm paramter list, like for EEARH Also nice, but errorprone, since i keep making mistakes in numbering, especially when you have many parameters and have to change something. (3) The best thing to have would be something like __EECR__, resembling the definition for __SREG__, but that does not compile right now. Is the latter possible somehow? Or are there other solutions? greetings Ruud. _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list