Тогда использовать исходный вариант, а серийник считывать ассемблерной вставкой.
Пример:
Код
interrupt [23] void PP_ID(void){
#asm
_Sernum: .DW 0x1234
#endasm
}
#pragma warn-
unsigned int getSernum() {
#asm
ldi r30,low(_Sernum*2)
ldi r31,high(_Sernum*2)
lpm r26,Z+
lpm r31,Z
mov r30,r26
#endasm
}
#pragma warn+