Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Определение младшего и старшего байта числа типа int. Нужна подсказка

Непрочитано 12.05.2013, 00:00  
Andrey31380
Частый гость
 
Регистрация: 07.06.2011
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Andrey31380 на пути к лучшему
По умолчанию Определение младшего и старшего байта числа типа int. Нужна подсказка

Подскажите пожалуйста, в avr-gcc есть ли встроенные функции или макросы для определения младшего и старшего байтов переменных типа int.
Реклама:
Andrey31380 вне форума  
Непрочитано 12.05.2013, 00:20  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

char=int - младший байт
char=int››8 - старший байт
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 12.05.2013, 00:25  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

Я не знаю, но в таких случаях создаю дополнительные char переменные и присваиваю первой переменной значение младшего байта, а потом сдвигаю на 8 бит исходную переменную и опять значение младшего байта (бывшего старшего) присваиваю следующей доп. переменной. Может неправильно, но работает.
долго писал.
andries5 вне форума  
Непрочитано 12.05.2013, 08:15  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

Сообщение от akegor Посмотреть сообщение
char=int - младший байт
char=int››8 - старший байт
Слишком вольное обращение с типами данных. Не всякий компилятор такое стерпит. Наверное, пример из CV?
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 12.05.2013, 08:25  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

2 варианта:
Код:
#define Hi(Int)  (char) (Int››8)
#define Low(Int) (char) (Int)

#define LowB(x) (*((unsigned char*)* &(##x)+1)) 
#define HighB(x) (*((unsigned char*) &(##x)+0))
oleg110592 вне форума  
Непрочитано 12.05.2013, 09:55  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

Сообщение от ut1wpr Посмотреть сообщение
Слишком вольное обращение с типами данных. Не всякий компилятор такое стерпит. Наверное, пример из CV?
Так и Билдер не против...
Неявное преобразование разве отменили?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 15.05.2013, 23:47  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

oleg110592, не понятен смысл выражения :
Цитата:
#define LowB(x) (*((unsigned char*)* &(##x)+1))
MaxiMuz79 вне форума  
Непрочитано 15.05.2013, 23:57  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

я и сам с трудом понимаю - скопипастил где-то. Надо почитать про указатели. Может гуру подскажут. Особенно ##x непонятно. Подобную конструкцию применял для пиков - работало.
Код:
//**************************************************  ****** 
void WRITE_INT_EEPROM(unsigned char n, unsigned int data)
{ 
	EEPROM_WRITE(n+0, *((unsigned char*)&data + 0) );
	EEPROM_WRITE(n+1, *((unsigned char*)&data + 1) ) ; 
}
//**************************************************  ****** 
unsigned int READ_INT_EEPROM(unsigned char n)
{ 
unsigned int data;

	*((unsigned char*)&data + 0) = EEPROM_READ(n + 0);
	*((unsigned char*)&data + 1) = EEPROM_READ(n + 1);
   	return(data); 
}
oleg110592 вне форума  
Непрочитано 16.05.2013, 01:31  
electroTrash
Прописка
 
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
electroTrash на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от MaxiMuz79 Посмотреть сообщение
не понятен смысл выражения :
Мало того что непонятен , так к тому же такой способ определения старшего и младшего байта зависит от реализации самого компилятора (которая в свою очередь зависит от архитектуры процессора), ведь есть разный порядок хранения в памяти называемый: как big endian и low endian .

Последний раз редактировалось electroTrash; 16.05.2013 в 01:50.
electroTrash вне форума  
Непрочитано 16.05.2013, 09:23  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: определение младшего и старшего байта числа типа int . Нужна подсказка.

Сообщение от MaxiMuz79 Посмотреть сообщение
oleg110592, не понятен смысл выражения :
Злокопипаст. Один астериск лишний, тот, что перед амперсандом.
nahimovv вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа симистора maks191 Информация по радиокомпонентам 5 09.12.2012 23:15
Научите int в два байта и наоборот? ) whoim Электроника - это просто 4 13.08.2012 21:56
Как 4 байта, принятых по USART превратить в число формата long int Black Jack Микроконтроллеры, АЦП, память и т.д 2 06.06.2012 21:32
Определение типа усилителя JeckVi Электроника - это просто 16 22.02.2010 17:49
Программное определение типа EEPROM Jendoss Микроконтроллеры, АЦП, память и т.д 3 24.03.2009 18:44


Часовой пояс GMT +4, время: 12:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.