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

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

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

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

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

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


 
Опции темы

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

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

Сообщение от oleg110592 Посмотреть сообщение
я и сам с трудом понимаю - скопипастил где-то. Надо почитать про указатели. Может гуру подскажут. Особенно ##x непонятно. Подобную конструкцию применял для пиков - работало.
##x - стандартная фишка препроцессора, вставка, остальное - указатель с приведением типов на ячейку по адресу. Широко применяется в 32-ух битных МК. Например, в текущей реализации STM32F0XX (подозреваю, что и в STM32F3XX) без подобной конструкции невозможно реализовать 8-ми (и ниже) битный SPI. В то же время, подобная конструкция позволяет свободно манипулировать половинками порта STM32, как двумя разными 8-ми битными портами.
Реклама:

Последний раз редактировалось nahimovv; 16.05.2013 в 09:50.
nahimovv вне форума  
Непрочитано 16.05.2013, 09:59  
electroTrash
Прописка
 
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
electroTrash на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от nahimovv Посмотреть сообщение
##x - стандартная фишка препроцессора
Ну, то что стандартная, и так понятно, а что эта фишка значит и где ее надо применять?
electroTrash вне форума  
Непрочитано 17.05.2013, 08:36  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

electroTrash, читаем мануал на любой компилятор .
Ткнул в первый попавшийся под руку :
Цитата:
The operator ## placed between two words of the replacement sequence
will concatenate them into a single one. A word may be a parameter but
in such a case, the parameter will not be expanded before beeing concatenated.
#define BIT(var, bit) var.b_ ## bit
will transform:
BIT(port, 3) = 1;
into
port.b_3 = 1;
Перевести ?
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 17.05.2013 в 08:45.
dosikus вне форума  
Непрочитано 17.05.2013, 16:38  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от nahimovv Посмотреть сообщение
##x - стандартная фишка препроцессора
Это до C99 (емнип) была "фишка", а теперь - фича.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 13.06.2013, 11:05  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Всем добрый день. Может мой ответ и запоздалый. Но, странно, что никто не упомянул об объединении - union.

ведь можно например так:

// определим объединение
union my_union
{
long int A;
char B[4];
} Temp;

далее записав в объединение длинное целое через элемент A , имеем доступ к каждому отдельному байту через член массива B
например запишем:

Temp.A=0x33221100;

Тогда
Temp.B[0] содержит 0x00
Temp.B[1] содержит 0x11
Temp.B[2] содержит 0x22
Temp.B[3] содержит 0x33

С простым целым можно поступать также.
AlexPi вне форума  
Непрочитано 13.06.2013, 14:53  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от AlexPi Посмотреть сообщение
ведь можно например так:
// определим объединение
union my_union
{
long int A;
char B[4];
} Temp;
далее записав в объединение длинное целое через элемент A , имеем доступ к каждому отдельному байту через член массива B
а не получиться так, что на некоторых компиляторах последовательность массива может не совпасть порядком старших и младших байтов в целочисленной переменной ?
MaxiMuz79 вне форума  
Непрочитано 13.06.2013, 15:44  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от MaxiMuz79 Посмотреть сообщение
а не получиться так, что на некоторых компиляторах последовательность массива может не совпасть порядком старших и младших байтов в целочисленной переменной ?
Для стандартного С вариантов не должно быть, это же классика применения объединений. Во всяком случае у меня все работает как положено, применял не однократно.
В конце концов посмотрите того же Шилдта, я думаю Ваши сомнения развеются.
AlexPi вне форума  
Непрочитано 13.06.2013, 16:02  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от AlexPi Посмотреть сообщение
Для стандартного С вариантов не должно быть, это же классика применения объединений.
Могут быть различия в системах с разной индианностью. Или я не прав?
_Артём_ вне форума  
Непрочитано 13.06.2013, 16:40  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от _Артём_ Посмотреть сообщение
Могут быть различия в системах с разной индианностью.
Приведите конкретный пример, пожалуйста. В смысле какие системы Вы имеете ввиду?

Хотя с другой стороны, какая разница какой порядок байтов. Главное знать этот порядок для своей конкретной системы. А сам способ, я считаю, весьма не плох.

Последний раз редактировалось AlexPi; 13.06.2013 в 17:14.
AlexPi вне форума  
Непрочитано 13.06.2013, 17:18  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Определение младшего и старшего байта числа типа int. Нужна подсказка

Сообщение от AlexPi Посмотреть сообщение
Приведите конкретный пример, пожалуйста. В смысле какие системы Вы имеете ввиду?
http://ru.wikipedia.org/wiki/Big_endian

Сообщение от AlexPi Посмотреть сообщение
А сам способ, я считаю, весьма не плох.
Вобщем да.
_Артём_ вне форума  
 
Опции темы

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

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, время: 07:01.


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