ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
155105 Топик полностью
Dir (29.04.2009 01:08, просмотров: 178) ответил Sneg на Здравствуйте. Недавно начал программировать микроконтроллеры Atmel на С в IAR. Такая задача:Нужно разбить переменную состоящую из нескольких байт (float, int...) на отдельные байты и расфасовать в массив из байтов чтобы потом отправить по usart. Тоесть
Пусть float fX; typedef unsigned char BYTE; BYTE Buffer[100]; Варианты преобразования: 1. Определение: #define BYTE0(x) ((BYTE*)&(x))[0] #define BYTE1(x) ((BYTE*)&(x))[1] #define BYTE2(x) ((BYTE*)&(x))[2] #define BYTE3(x) ((BYTE*)&(x))[3] Пример использования: Buffer[8]= BYTE0(fX); Buffer[9]= BYTE1(fX); Buffer[10]= BYTE2(fX); Buffer[11]= BYTE3(fX); 2. Определение: #define OBJ_TO_MASS(x,y) sys_copy(&(x),(y),sizeof(x)) #define MASS_TO_OBJ(x,y) sys_copy((x),&(y),sizeof(y)) Пример использования: OBJ_TO_MASS(fX,Buffer+8); Что такое переменная fX вообще значения не играет. Может быть хоть дабл. Для чего я во втором случае привел еще одно определение и как его использовать, думаю, сам догадаешься