Страница 2 из 4

Re: вопрос по mikroc

Добавлено: Чт авг 04, 2016 14:13:57
ARV
alex_ писал(а):где аргументы, с примерами?
в книгах по Си. да и здесь на форуме немало говорено об этом.

Re: вопрос по mikroc

Добавлено: Чт авг 04, 2016 14:29:46
alex_
Блин разве сложно в 2 словах сказать в чём ошибка, прям как с женщиной общаюсь, на тему: угадай на что я обиделась :(

Re: вопрос по mikroc

Добавлено: Чт авг 04, 2016 15:47:05
dosikus
Это азы языка, которых вы не знаете.
Какие еще аргументы нужны????

В двух словах уже объяснял - в хэдерах не может быть определений могут быть только объявления.
Все сущности только в исходниках. Которые кстати могут быть не только текстовыми файлами но и уже скомпилированными библиотеками.

И вам лучше начать исправлять свои пробелы. Читайте классику и что нибудь из лекций.
Например Линский основы С++ . В первых лекциях доходчиво объясняет основные принципы .

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 11:48:04
Ярослав555
День добрый уважаемые. Хочу задать вопросик по mikroC и, наверное, вообще по PIC. Сам я AVRщик, и привык к хидерам вида ioavr.h, где описаны регистры периферии. Открываю mikroC, создаю проект, начинаю искать хидер по папке среды (как у меня сделано в ИАРе). Не нахожу. Беру какой-то проект из инета (первый раз сел за PIC, прошу учитывать). Пытаюсь компилить, он ругается на какие-то строчки, я их коменчу, таки компилю, запускаю в протеусе - работает. странно. Кароче, правильно ли я понимаю, что имена портов, регистров "вшиты" в mikroC? и хидеров не надо?

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 14:32:57
alex_
Я пишу в микро Си не только для пиков но и для АВР, поэтому его и выбрал, что на одной программе можно писать под 2 семейства :)
Например для того чтобы поморгать светодиодом никаких хилдеров не надо, всё подключается автоматом при создании проекта при выборе микроконтроллера, а если хочешь использовать библиотеку, например символьный LCD то просто подключаешь библиотеку во вкладке Library Manager.

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 15:10:07
Ярослав555
я по той же причине выбрал иар (есть все кроме PIC :))) )
слушайте, только что игрался в микро с. на конструкцию вида

Код: Выделить всё

char digs[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
portc=0; //to clear port
portd=0;
trisc=0; //as output
trisd=0; //as output
int i;
получаю ошибку. странно, сижу, всмативаюсь в код, а ж в глазах темнеет. потом делаю вот так, поскольку привык к любым поворотам в жизни.

Код: Выделить всё

char digs[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int i;
portc=0; //to clear port
portd=0;
trisc=0; //as output
trisd=0; //as output
и оно компилится. Они что серьезно? Это где-то настраивается, или такое поведение вшито в среду? если вшито и не настраивается, то я не знаю чем они думают.
Идем дальше. Конструкции вида for(char k=0; k<=8; k++){...} не юзабельны. Где в среде настраивается компилятор, я не нашел (стандарты языка С, С или С++ использую и т.д.). Вроде симпатичная программка, но такого шлака не ожидал.

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 15:25:43
scorpi_0n
Ярослав555 писал(а): Идем дальше. Конструкции вида for(char k=0; k<=8; k++){...} не юзабельны. Где в среде настраивается компилятор, я не нашел (стандарты языка С, С или С++ использую и т.д.). Вроде симпатичная программка, но такого шлака не ожидал.
Странно что вы не знаете, что такое стандарты и расширения.

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 15:30:14
Ярослав555
scorpi_0n писал(а):Странно что вы не знаете, что такое стандарты и расширения.
Я как раз догадался что это связано с расширениями языка. Какое именно это расширение или стандарт, меня абсолютно не интересует. У меня даже нет претензий что прога что-то не поддерживает. Но! Схерали, извините, она пишет ошибку что у меня скобочка не там, если проблема в том, что ей не нравится что я объявил переменную не там где надо?
такс, качаю MP Lab (не зря мне микро с, во времена старта на аврках, не приглянулся).

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 19:13:51
alex_
Кстати да, замечал такое дело: сначала идёт описание переменных а потом уже присвоение значений регистрам. Если пытаешься объявить переменную в середине функции то он будет сильно ругаться. Я обычно глобальные переменные объявляю до main, а настройка портов идёт уже в самом теле main, тогда проблем не возникает.
Кстати в MikroC есть куча рабочих примеров, почти для всех имеющихся встроенных библиотек, очень удобно для стартапа :)

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 19:37:13
dosikus
"Работая", а точней играясь с микроС , вы не изучаете С как таковой, а страдаете х*""ней. Ибо , как было уже не раз озвучено , микроС компилятор языка внешне похожего на С , но не С.

Добавлено after 4 minutes 33 seconds:
Ярослав555 писал(а):Но! Схерали, извините, она пишет ошибку что у меня скобочка не там, если проблема в том, что ей не нравится что я объявил переменную не там где надо?
Приучайте себя к порядку, а не к барсико подобным выходкам.
Переменные должны быть определены только в начале блока, а не там где вам прихотнулось.

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 19:39:38
alex_
Внесу свою лепту: конечный - итог это готовое устройство, а на чём написано это устройство на С на псевдо С это никому не интересно, если устройство работает как надо, то заказчик готов заплатить за него деньги, и ему наплевать на чём оно было написано.
dosikus писал(а): Приучайте себя к порядку, а не к барсико подобным выходкам.
Переменные должны быть определены только в начале блока, а не там где вам прихотнулось.
Вот тут вы правы абсолютно :beer:

Re: вопрос по mikroc

Добавлено: Пт ноя 11, 2016 20:40:35
dosikus
alex_ писал(а):Внесу свою лепту: конечный - итог это готовое устройство, а на чём написано это устройство на С на псевдо С это никому не интересно, если устройство работает как надо, то заказчик готов заплатить за него деньги, и ему наплевать на чём оно было написано.
Да, такова нынешняя тенденция -сляпать абыкакработало и побыстрей втюхать. Однако все это чревато, во первых из-за закрытых либ протестировать полностью устройство вам не удастся , во вторых время подобных ляповатых "разработчиков" заканчивается- заказчику уже не надо абыкак, ему нужны гарантии . А абыкаки их дать не могут...

Re: вопрос по mikroc

Добавлено: Сб ноя 12, 2016 08:09:59
alex_
Ты не поверишь, но все мои проекты работают как надо и уже не первый год, так что выражение "абы как" здесь не к месту. А накосячить в коде можно на любой программе и на любом языке, это зависит от рук пишущего.

Re: вопрос по mikroc

Добавлено: Вт ноя 15, 2016 10:22:04
shindax
alex_ писал(а):Ты не поверишь, но все мои проекты работают как надо и уже не первый год...
А вот такие заявления слышал неоднократно. Причем PIC при этом запитан от 9В и тактируется от резонатора на 25MHz. При этом ещё добавляют: "На разных моделях PIC", и перечисляют: "PIC16F84, PIC16F628 ну и на многих других" :D Вам раз пять предлагали почитать наконец нормальную литературу по Си, но Вы по-прежнему недоумеваете :
alex_ писал(а): ...Если пытаешься объявить переменную в середине функции то он будет сильно ругаться...
Так что про "не первый год" лично мне как-то не очень верится. Или-же у Вас какие-нибудь китайские годы ( про китайские ватты многие, наверное, слышали ), или-же уж совсем простые устройства, в которых ломаться просто нечему. :) Захотите опровергнуть, покажите хотя-бы пару Ваших разработок, которые работают годами. :)

Re: вопрос по mikroc

Добавлено: Вт ноя 15, 2016 11:53:34
alex_
Итак начнём:
  • во первых: тема данного форума называется - "вопрос по mikroc" только mikroc здесь похоже никому не интересен, а собрались люди которых хлебом не корми, тянет на нравоучения. Вообще то форум нужен для того чтобы помочь товарищу советом, а не слать его со всеми вопросами на 6 букв(Google).
  • во вторых: какой бы не был язык си, он существует в разный интерпритациях: mikroc, MP Lab, Borland C++Builder, AVR Studio. Во всех есть свои тонкости, и если что то работает в одном не факт что будет работать в другом, поскольку синтаксис различается.
  • в третьих: То что мои заказчики довольны это факт, а то что там думают: Хилари, Порошенко, Псаки и все остальные мне на них глубоко . . . не перед ними я отчитывался.
  • и напоследок: никто мне не указ: как писать программы, как держать паяльник и с кем спать.
Поэтому процитирую нашего уважаемого модератора Alex'a: "Я мненью вашему вращенье придавал, а осью был - мой детородный орган."

PS: тему можно закрывать, так как кроме флуда и нравоучений в ней ничего полезного нет.

С уважением alex_ :)))

Re: вопрос по mikroc

Добавлено: Пт ноя 25, 2016 18:56:45
ds3ds3
Напишу по теме :).
Если, например, я хочу хранить в статическом массиве некие данные (меню) и в том числе адрес переменной, в которой хранятся данные для очередного пункта меню, то... нужно использовать указатель? Но MikroC против такого внутри статического массива.
Если использовать директиву абсолют для переменной (а в массиве хранить число - как указатель), то... компилятор не обращает внимания что регистр занят мной и пихает туда другие переменные, так что видимо придется самому всю память размечать?
Решил вопрос так: храню порядковый номер в статическом массиве для массива переменных и для вычисления тратится много памяти.
Есть ли более оптимальное решение?

Re: вопрос по mikroc

Добавлено: Пт ноя 25, 2016 19:10:03
ARV
ds3ds3 писал(а):Но MikroC против такого внутри статического массива.
может быть вы не правильно это делаете?

Re: вопрос по mikroc

Добавлено: Пт ноя 25, 2016 19:25:40
ds3ds3
Не могли бы вы написать как правильно?
И еще как правильно изменить с помощью указателя старший байт двухбайтовой переменной, вот так
*((char*)&data_unsiged_int + 1)
выглядит как-то некрасиво...

Re: вопрос по mikroc

Добавлено: Пт ноя 25, 2016 19:29:27
ARV
во-первых, как вы задаете значение указателя в статическом массиве?
во-вторых, как вы сам элемент массива описали?
как правильно - я не могу написать, потому как правильных способов может быть несколько. легче указать на ваши ошибки, если таковые реально есть.

Re: вопрос по mikroc

Добавлено: Пт ноя 25, 2016 19:42:10
ds3ds3
1 )Вот так не работает.
char a = 10;
unsigned int arr = {1 , &a};
p1 = *arr[1];

А если попробывать
p1 = *((char*)arr[1])
то, кстати, работает, но как правильно?

2) А вот другой вопрос: как правильно изменить с помощью указателя старший байт двухбайтовой переменной, вот так
*((char*)&data_unsiged_int + 1)
допустимо ли писать?

3) Директива абсолют может ли работать совместно с разметкой ОП компилятора?