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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 17.07.2009, 21:04  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию

Вообще-то это по стандарту С обращаться к полям union через точку. А то что в IAR AVR можно без точки - скорее всего "расширение синтаксиса" для облегчения перехода с бейсика. Это неправильно, мне кажется.
Реклама:
TEHb вне форума  
Непрочитано 20.07.2009, 20:49  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от TEHb
Вообще-то это по стандарту С обращаться к полям union через точку. А то что в IAR AVR можно без точки - скорее всего "расширение синтаксиса" для облегчения перехода с бейсика. Это неправильно, мне кажется.
Действительно, проверил IAR AVR, он поддерживает обе записи обращения к структурам и союзам... и с точками и без точек... а HiTech PIC только с точками...

потом просмотрел описания:
Программирование на С AVR PIC Шпак Ю.А
Болски М.И. Язык программирования Си. Справочник
в них нет примера обращения к союзам... только показано как их обьявлять...

обращениt с точками нашёл только в описании
Громов Ю.Ю.,Татаренко С.И. Программирование на языке СИ: Учебное пособие. -Тамбов,1995.- 169 с...

Спасибо за подсказку.
picavr вне форума  
Непрочитано 20.07.2009, 23:40  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

Че то вы все книжки не те смотрите. Надо бы основоположников читать: Маркса, Энгельса...
Кернигана/Риччи (стр.190)
Цитата:
Синтаксис доступа к элементам объединения следующий:
имя-объединения . элемент
или
указателъ-на-объединение -› элемент
Уэйта/Прата (глава "Объединения -краткий обзор")
Цитата:
Вот как используется объединение:
fit.digit = 23; /* 23 записывается в fit; используется 2 байта */
fit.double = 2.0; /* 23 стирается, 2.0 записывается; используется 8 байтов */
fit.letter = 'h'; /* 2.0 стирается, h записывается; используется 1 байт */
Halex07 вне форума  
Непрочитано 22.07.2009, 21:51  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от Halex07
Че то вы все книжки не те смотрите.
Спасибо, честно говоря, я думал что описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ конструкций, которые не являются расширениями для работы с МК.

Ведь везде только и говорят о переносимости СИ.

А на самом деле...
picavr вне форума  
Непрочитано 22.07.2009, 23:33  
Leontiev
Прохожий
 
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Leontiev на пути к лучшему
По умолчанию

Сообщение от picavr
Сообщение от Halex07
Че то вы все книжки не те смотрите.
Спасибо, честно говоря, я думал что описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ конструкций, которые не являются расширениями для работы с МК.

Ведь везде только и говорят о переносимости СИ.

А на самом деле...
Если заботиться о переносимости, то в первую очередь полезно было бы знать стандарт С/C++. "Описания", упомянутые вами, конечно должны "показывать КОРРЕКТНЫЙ синтаксис СИ" и т.п., но КОРРЕКТНЫЙ не значит СТАНДАРТНЫЙ. Так что хотябы заглядывайте в "те книжки", между чтением "не тех".
P.S. ИМХО.
Leontiev вне форума  
Непрочитано 22.07.2009, 23:40  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от Leontiev
КОРРЕКТНЫЙ не значит СТАНДАРТНЫЙ.
Имено это и имелось в виду... КОРРЕКТНЫЙ с точки зрения стандартов СИ и переносимости.
picavr вне форума  
Непрочитано 22.07.2009, 23:47  
Leontiev
Прохожий
 
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Leontiev на пути к лучшему
По умолчанию

Сообщение от picavr
Сообщение от Leontiev
КОРРЕКТНЫЙ не значит СТАНДАРТНЫЙ.
Имено это и имелось в виду... КОРРЕКТНЫЙ с точки зрения стандартов СИ и переносимости.
Тогда так: "описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ" - нет, не должны.
Leontiev вне форума  
Непрочитано 23.07.2009, 00:04  
Leontiev
Прохожий
 
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Leontiev на пути к лучшему
По умолчанию 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, то есть правильно.
- ну про книжки уже говорили.

-- Прилагается рисунок: --

Leontiev вне форума  
Непрочитано 23.07.2009, 02:12  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от Leontiev
Переменная bcdl1 недоступна для чтения/записи похоже потому, что компилятор не умеет обращаться с таким типом.
Уважаемый.. Спасибо, но уже разобрались. Обращение к элементам союза, которое работало в IARе - не работает в HiTech. ТЕНЬ подсказал стандартную запись обращения к элементу союза.
Сообщение от Leontiev
Тогда так: "описания, которые написаны по СИ для микроконтролеров - ДОЛЖНЫ показывать КОРРЕКТНЫЙ синтаксис СИ" - нет, не должны.
Тогда о какой переносимости программ на СИ можно говорить?
picavr вне форума  
Непрочитано 23.07.2009, 02:33  
Leontiev
Прохожий
 
Регистрация: 11.06.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Leontiev на пути к лучшему
По умолчанию

Повторю. Если Вас заботит переносимость - используйте стандарты, а не "описания, которые написаны по СИ для микроконтролеров".
Leontiev вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot