Dir (29.04.2009 01:08, просмотров: 196) ответил 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 вообще значения не играет. Может быть хоть дабл.
Для чего я во втором случае привел еще одно определение и как его использовать, думаю, сам догадаешься