FUZZY_, вы на форуме задавали с десяток вопросов, и НИ ОДНОГО РАЗА не задали так, чтобы другие смогли понять, что же вы хотите.
конкретно сейчас: что за компилятор? что за платформа? что такое xdata? тут все должны гадать или вы все-таки смилостиветесь и поделитесь сокровенным?
ваш код проверен в WinAVR (c небольшими правками, не меняющими сути) - он рабочий.
вы написали fvar=(float)((unsigned int) RxBuffer[1]); - это на 100% эквивалентно записи fvar = RxBuffer[1]; - ваша запись похожа на паранойю, хотя и вполне работоспособна.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
data — размещение во внутреннем ОЗУ процессора, младшие 128 байт. Обращение посредством прямой адресации и косвенной адресации через индексные регистры R0, R1 (инструкции процессора пересылки данных MOV @R0).
idata — размещение во внутреннем ОЗУ процессора, все 256 байт. Обращение только посредством косвенной адресации через индексные регистры R0, R1 (инструкции процессора пересылки данных MOV @R0).
bdata — размещение в побитно адресуемой области памяти внутреннего ОЗУ (адреса 0x20-0x2F)
pdata — размещение во внешней памяти. Размер памяти ограничен 256 байтами. Доступ посредством косвенной адресации через индексные регистры R0, R1 (инструкции процессора пересылки данных MOVX @R0).
xdata — размещение во внешней памяти. Размер памяти ограничен 64 КБ. Доступ посредством косвенной адресации через индексный регистр DPTR (инструкции процессора пересылки данных MOVX @DPTR).
code — размещение константных данных в области памяти программ. Размер памяти ограничен 64 КБ. Только чтение данных посредством косвенной адресации через индексный регистр DPTR или регистр PC и указание смещения в аккумуляторе ACC (инструкции процессора MOVC A,@A+DPTR; MOVC A,@A+PC).
far — внешняя память данных, адресация до 16 МБ.
Для определения SFR регистров используются квалификаторы sfr и sfr16 (для байтовых и двухбайтовых переменных соответственно).