Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
17.07.2009, 21:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Вообще-то это по стандарту С обращаться к полям union через точку. А то что в IAR AVR можно без точки - скорее всего "расширение синтаксиса" для облегчения перехода с бейсика. Это неправильно, мне кажется.
|
|
|
|
20.07.2009, 20:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от TEHb
|
Вообще-то это по стандарту С обращаться к полям union через точку. А то что в IAR AVR можно без точки - скорее всего "расширение синтаксиса" для облегчения перехода с бейсика. Это неправильно, мне кажется.
|
Действительно, проверил IAR AVR, он поддерживает обе записи обращения к структурам и союзам... и с точками и без точек... а HiTech PIC только с точками...
потом просмотрел описания:
Программирование на С AVR PIC Шпак Ю.А
Болски М.И. Язык программирования Си. Справочник
в них нет примера обращения к союзам... только показано как их обьявлять...
обращениt с точками нашёл только в описании
Громов Ю.Ю.,Татаренко С.И. Программирование на языке СИ: Учебное пособие. -Тамбов,1995.- 169 с...
Спасибо за подсказку.
|
|
|
|
20.07.2009, 23:40
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Че то вы все книжки не те смотрите. Надо бы основоположников читать: Маркса, Энгельса...
Кернигана/Риччи (стр.190)
Цитата:
|
Синтаксис доступа к элементам объединения следующий:
имя-объединения . элемент
или
указателъ-на-объединение -› элемент
|
Уэйта/Прата (глава "Объединения -краткий обзор")
Цитата:
|
Вот как используется объединение:
fit.digit = 23; /* 23 записывается в fit; используется 2 байта */
fit.double = 2.0; /* 23 стирается, 2.0 записывается; используется 8 байтов */
fit.letter = 'h'; /* 2.0 стирается, h записывается; используется 1 байт */
|
|
|
|
|
22.07.2009, 21:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Halex07
|
Че то вы все книжки не те смотрите.
|
Спасибо, честно говоря, я думал что описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ конструкций, которые не являются расширениями для работы с МК.
Ведь везде только и говорят о переносимости СИ.
А на самом деле...
|
|
|
|
22.07.2009, 23:33
|
|
Прохожий
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от picavr
|
Сообщение от Halex07
|
Че то вы все книжки не те смотрите.
|
Спасибо, честно говоря, я думал что описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ конструкций, которые не являются расширениями для работы с МК.
Ведь везде только и говорят о переносимости СИ.
А на самом деле...
|
Если заботиться о переносимости, то в первую очередь полезно было бы знать стандарт С/C++. "Описания", упомянутые вами, конечно должны "показывать КОРРЕКТНЫЙ синтаксис СИ" и т.п., но КОРРЕКТНЫЙ не значит СТАНДАРТНЫЙ. Так что хотябы заглядывайте в "те книжки", между чтением "не тех".
P.S. ИМХО.
|
|
|
|
22.07.2009, 23:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Leontiev
|
КОРРЕКТНЫЙ не значит СТАНДАРТНЫЙ.
|
Имено это и имелось в виду... КОРРЕКТНЫЙ с точки зрения стандартов СИ и переносимости.
|
|
|
|
22.07.2009, 23:47
|
|
Прохожий
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от picavr
|
Сообщение от Leontiev
|
КОРРЕКТНЫЙ не значит СТАНДАРТНЫЙ.
|
Имено это и имелось в виду... КОРРЕКТНЫЙ с точки зрения стандартов СИ и переносимости.
|
Тогда так: "описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ" - нет, не должны.
|
|
|
|
23.07.2009, 00:04
|
|
Прохожий
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Си, IAR AVR & Hi Tech PICC
Сообщение от picavr
|
//Непонятка с UNION в HiTech PICC 9.60PL3
//имеем 4 переменых типа char и одну типа long требуется обьединить их союзом.
//обьявляю в IAR AVR 5.20:
Код:
|
union {
struct {
unsigned long BCD0:8,
BCD1:8,
BCD2:8;
BCD3:8;
};
unsigned long BCDL;
}; |
получаю переменную BCDL типа unsigned long и переменные BCD0,BCD1,BCD2,BCD3
типа unsigned char, ко всем переменным можно обращаться по именам, писать и читать, то есть переменные BCD0-3 по адресам совпадают с переменной BCDL что и требовалось получить
//если присвоить
Код:
|
BCDL=0x765453210
//то в переменых получаем:
BCD0=0x10
BCD1=0x32
BCD2=0x54
BCD2=0x76 |
//обьявляю в Hitech PICC 9.60pl3:
Код:
|
union{
struct{
unsigned long bcdl0;
unsigned char bcd0;
unsigned char bcd1;
unsigned char bcd2;
unsigned char bcd3;
}bcdl0;
}bcdl1; |
в окне переменных (Watch) - вижу переменные bcd0,bcd1,bcd2,bcd3 обьединены союзом bcdl1 ;
но переменные bcd0,bcd1,bcd2,bcd3 не доступны для чтения и записи, как и переменная bcdl0 или bcdl1
|
Переменная bcdl1 недоступна для чтения/записи похоже потому, что компилятор не умеет обращаться с таким типом. Для него это просто область памяти известного размера.
Сообщение от picavr
|
//Если сначала обьявляю переменные а потом их обьединяю,
Код:
|
unsigned long bcdl0;
unsigned char bcd0;
unsigned char bcd1;
unsigned char bcd2;
unsigned char bcd3;
union{
struct{
unsigned long bcdl0;
unsigned char bcd0;
unsigned char bcd1;
unsigned char bcd2;
unsigned char bcd3;
}bcdl0;
}bcdl1; |
то переменные bcd0,bcd1,bcd2,bcd3 и bcdl видны и доступны для записи чтения, но не совпадают по адресам с переменными (с такими же именами но обьединёными в союз ) bcd0,bcd1,bcd2,bcd3 и bcdl0
которые как и в первом примере не доступны для чтения и записи. То есть просто получаю переменные не оьединёные союзом....
|
- все правильно. Вы объявляете какие-то переменные, потом объявляете еще одну типа union. С чего бы всем этим переменным "объединяться в союз"? Это совершенно разные переменные.
Сообщение от picavr
|
Кто пихнёт в нужном направлении? чего я не так записываю в Hitech, что бы работало как в IAR, то есть правильно.
|
- ну про книжки уже говорили.
-- Прилагается рисунок: --
|
|
|
|
23.07.2009, 02:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Leontiev
|
Переменная bcdl1 недоступна для чтения/записи похоже потому, что компилятор не умеет обращаться с таким типом.
|
Уважаемый.. Спасибо, но уже разобрались. Обращение к элементам союза, которое работало в IARе - не работает в HiTech. ТЕНЬ подсказал стандартную запись обращения к элементу союза.
Сообщение от Leontiev
|
Тогда так: "описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ" - нет, не должны.
|
Тогда о какой переносимости программ на СИ можно говорить?
|
|
|
|
23.07.2009, 02:33
|
|
Прохожий
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Повторю. Если Вас заботит переносимость - используйте стандарты, а не "описания, которые написаны по СИ для микроконтролеров".
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
HI-TECH PICC™ Enterprise Edition (new!!!)???
|
shihaidong |
Микроконтроллеры, АЦП, память и т.д |
14 |
30.12.2011 15:45 |
Библиотеки LCD 44780 на С CCS или HI-TECH PICC для PIC16
|
vsvetlov |
Микроконтроллеры, АЦП, память и т.д |
15 |
27.10.2009 08:03 |
IAR for AVR & Assembler
|
GLVlad |
Микроконтроллеры, АЦП, память и т.д |
3 |
04.06.2008 16:46 |
Вопрос новичка. IAR C, AVR & interrupt
|
sns13 |
Микроконтроллеры, АЦП, память и т.д |
5 |
18.03.2008 18:08 |
PIC18F.., HI-TECH PICC-18 и MPLAB
|
avartemiy |
Микроконтроллеры, АЦП, память и т.д |
11 |
20.08.2007 02:35 |
Часовой пояс GMT +4, время: 15:29.
|
|