Обсуждаем контроллеры компании Atmel.
Ответить

Сб сен 15, 2007 20:29:28

Попробую... Есть пара вопросов. В процессе инициализации дисплея на пине Enable должен быть высокий уровень?

Чт ноя 22, 2007 14:35:22

CV AVR пишет evaluation version file size limit exceeded... и чё?
Любой блок ремаркирую всё нормально (типа объём уменьшаю).

Раньше такое тоже бывало, но когда появлялось, а когда исчезало...

В чём писать то?

У меня какраз сейчас самый кайф - менюшки и циферки оживают.

Меня по прежнему бросает в прострацию кагда я смотрю на эти простыни! И мне (толькочто чтото осилившему) бъёт по мозгам!
А там- вон то. То-да сё... жми сюда!

If -ы глючат!

if (ляляля){
if (бебебе){
то даcё }
if(а вот нада){
то и это}
}

бебебе не выполняется никогда.
а вот это нада тоже бредит.

Думаю применить case, но примеры не понятные...

Вот так пойдёт?

switch (PORTB.5==0)

{
case a=1: a++; break;
case a=2: a++; break;
case a=3: a=1; break;
default : ;
}

Чт ноя 22, 2007 14:48:08

MetEl писал(а):Вот так пойдёт?

Код:
 switch (PORTB.5==0)

{
 case a=1: a++;    break;
 case a=2:  a++;    break;
 case a=3:  a=1;    break;
 default : ;
 }


Похоже так должно быть

Код:
 switch (a) { // выбор в зависимости от значения переменной - a
 case 1: a++;     break;
 case 2:  a++;    break;
 case 3:  a=1;     break;
                          }



PORTB.5==0 не знаю к чему там.
Последний раз редактировалось tych Чт ноя 22, 2007 15:36:14, всего редактировалось 1 раз.

Чт ноя 22, 2007 14:49:33

MetEl писал(а):If -ы глючат !


Вы не верно их пишите. Посмотрите на стр. 5 как правильно.

Чт ноя 22, 2007 15:09:03

Никаких выводов я не могу сделать из 05 стр.
По switch посмотрите сами и свыжим взглядом.

А на ссылках по примерам (for посмотрите...) вообще тупик.
Хотя я больше им пользуюсь (citforum-учебнгик по Си).

И посмотрите шаблон for вCV AVR!

Чт ноя 22, 2007 15:28:56

MetEl писал(а):По switch посмотрите сами и свыжим взглядом.


Напишите словами ПОДРОБНО что вам нужно сделать.

MetEl писал(а):А на ссылках по примерам (for посмотрите...) вообще тупик.

И посмотрите шаблон for вCV AVR!


Вы же про IF писали !
For откуда "всплыл" в бесседе ?

Или вы перешли в стадию обучения когда вопросы растут как снежный ком ?

Чт ноя 22, 2007 15:37:35

MetEl писал(а):По switch посмотрите сами и свыжим взглядом.


Я по ошибке редактированием прежнего сообщения сделал - посмотри выше.

Чт ноя 22, 2007 15:42:36

MetEl писал(а):Никаких выводов я не могу сделать из 05 стр.
По switch


Вот цитата сто страницы 5 "Си для МК"

Код:
switch (выражение) {
case 5:
/* этот код будет выполняться если результат вычисления выражения равен числу 5   ...


А у вас как связано то что в скобках () со строчками выбора ???

Код:
switch (PORTB.5==0)
{
 case a=1: a++;    break;
 case a=2:  a++;    break;
 case a=3:  a=1;    break;
 default : ;
 }


Что вы тут не можете понять ?
Что у меня написано не понятно ?

Уверен что IF и FOR вы тоже поймете если прочитаете ВНИМАТЕЛЬНО и НЕСПЕША ! думая ...

ЖУЙТЕ!

Чт ноя 22, 2007 16:14:29

tych писал(а):
Код:
switch (выражение) {
case 5:
/* этот код будет выполняться если результат вычисления выражения равен числу 5   ...


Видетели, я не вижу в,- " /* это код выполнятся если..."
никакого кода! Там нету ни чиго!!!

Я догадываюсь, что вы имели ввиду, что этот код (программа чтоли?) может быть там написан!!! ГДЕ код , да и что это такое!

Как я это понимаю :

{ // начало тела програмы
int s;
// int объявление (предоставление пячейки памяти, чтоб скомпоновать и распределить место в машинном коде программы) переменной под названием s (s для удовства, желательно подходящее по смыслу с тем с тем где оно и как будет применятся) или mama_papa...

**тело програмы (общее) ***

if (условие) { ***тело женское***
// if - оператор - который оперируя заданными условиями
направляет точку работы программы в следующее за ним тело (женское) или пропуская тело женское безусловно(еслибы был оператор else (то (.) выполнения программы перешло бы в тело следующее за else)) на нижеследующие строки програмы( в общее тело)
}

*** тело программы (общее, и всё тоже)***

}

пример:
{
int s,r;
***
if(PORTB.5==0){
if (s=1){
r++;
s=0;
}
if(s=2){
r--;
s=1;
}
}

То что в примере, я пытаюся написать и осуществить. Но оно не работает.



ЗЫ:
(.) выполнения пограмы - счётчик команд.

Re: ЖУЙТЕ!

Чт ноя 22, 2007 16:23:03

MetEl писал(а):Видетели, я не вижу в,- " /* это код выполнятся если..."
никакого кода! Там нету ни чиго!!!


ДАК !!! Страницу то надо с начала читать! Тогда и ясен будет стиль изложения. Естественно при чтении с серидины не всё будет ясно.

Но точто после "кэйз" должно быть ЧИСЛО - КОНСТАНТА и так ясно ?

И что это число результат вычисления выражения в скобках тоже ЯСНО.

Re: ЖУЙТЕ!

Чт ноя 22, 2007 16:25:47

MetEl писал(а):
if (условие) { ***тело женское***
// if - оператор - который оперируя заданными условиями
направляет точку работы программы в следующее за ним тело (женское) или пропуская тело женское безусловно(еслибы был оператор else (то (.) выполнения программы перешло бы в тело следующее за else)) на нижеследующие строки програмы( в общее тело)
}

*** тело программы (общее, и всё тоже)***

}


Где вы такую чепуху находите ???

Вот на странице 5 написано:

if(){}else{}; идеальная конструкция если вам нужно выполнить какую то часть программы при наличии каких либо условий :


Код:
if (выражение) { /* делать этот код если выражение "истина" - т.е. результат его вычисления не ноль */
                }
else { /* делать этот код если выражение "ложь" - т.е. результат его вычисления равен нулю */
        }; 


ЧЁ тут непонятно ТА ?

Вот что мне нада

Чт ноя 22, 2007 16:39:15

tych писал(а):
ЧЁ тут непонятно ТА ?


А если у меня нет else. Или оно мне не нада?!
Что мне там писать! Сразу выход?
Мне просто нада:

Если PORTB на земле.
{
проверить н если:
-н=1 тогда { н=3 и ф=20}
-н=2 тогда { н=1 и ф=10}
-н=3 тогда {н=2 и ф=0}
}
Последний раз редактировалось MetEl Чт ноя 22, 2007 17:01:11, всего редактировалось 1 раз.

Re: ЖУЙТЕ!

Чт ноя 22, 2007 16:48:08

tych писал(а):Вот на странице 5 написано:
if(){}else{};

/* делать этот код если выражение
}
/* делать этот код если выражение

ЧЁ тут непонятно ТА ?


Который оперируя заданными условиями направляет точку работы программы... Разве это не одно и тоже?

Я сперва вижу if(){}else{}; и сразу же так и запоминаю...
Потом так и пишу.
А на пол страницы искать где там у вас закрывающая ковычка стоит... и потерялся.

((

Чт ноя 22, 2007 17:29:59

tych писал(а):
metEl писал(а):И посмотрите шаблон for вCV AVR!


Вы же про IF писали !
For откуда "всплыл" в бесседе ?

Или вы перешли в стадию обучения когда вопросы растут как снежный ком ?


Извените описАлся, читать как, - "И посмотрите шаблон IF в CVAVR".
Там ; в конце оператора If , если нету else...

Вообщето я не обучаюсь.
Я говорю что if в if -е в CVAVR глючит.

Чт ноя 22, 2007 18:48:37

Изучить классический Си надо в первую очередь, а лишь потом браться за его версию для МК. Причем изучать по книгам, на которых не одно поколение программистов выросло, а не по курсам "для чайников".

По всем предыдущим вопросам и выкрикам можно сделать один разъединственный вывод: вопросы задает человек, не имеющий ни малейшего понятия о том языке, на котором пытается писать программы.

Так дела не делаются. У tych-а еще терпения хватает че-то отвечать... а решение всего лишь в преодолении лени - MetEI, прочти книжку про Си!

Re: Вот что мне нада

Чт ноя 22, 2007 20:37:00

MetEl писал(а):А если у меня нет else. Или оно мне не нада?!
Что мне там писать! Сразу выход?


Можно пустоту оставить { пусто } а можно и желательно просто
else{} не писать - о чем и написано на стр. 5

MetEl писал(а): Мне просто нада:

Если PORTB на земле.
{
проверить н если:
-н=1 тогда { н=3 и ф=20}
-н=2 тогда { н=1 и ф=10}
-н=3 тогда {н=2 и ф=0}
}


Дак чтобы проверить на земле ли ножка PB5 вам

НУЖНО ВНИМАТЕЛЬНО прочитать стр. 2 курса - "устройство AVR" и понять из какого регистра читают ВХОДНЫЕ сигналы !

Код:
if(регистр входных сигналов B.5==0){

  swich  как я написал вам выше.

};

Чт ноя 22, 2007 22:11:51

А может дело в компиляторе?
Один знакомый присла прогу для ознакомления.
Там всё просто, хочешь в строчку пишу с ; хочешь вертикально раскладывай.
Хочешь за if-ом хоть пол страницы.
Всё работает правильно.

У меня компилятор не ругается, просто контроллер не делает так как в програме. Вот такое-

if(a<x<b){
ляляля}

Он тоже не выполняет...

Скачал ICCV7 for AVR думал запущу. Нет. Нет atmega128.h, delay.h.
((((

Чт ноя 22, 2007 23:13:25

MetEl писал(а):Вот такое-

if(a<x<b){
ляляля}

Он тоже не выполняет...


Я взял пример C:\CVAVR\examples\LED

и вставил ваше выражение - у меня выполняет, не ругается. Можете скомпилировать и асм листинг посмотреть.

MetEl писал(а):Скачал ICCV7 for AVR думал запущу. Нет. Нет atmega128.h


Там заголовки по другому называются.

======== А вообще если несколько компиляторов
кривые то нужно в "танцоре" проблему поискать ИМХО.
Вложения
LED.rar
(3.2 KiB) Скачиваний: 678

Ср ноя 28, 2007 12:41:13

Потому что нужно писать
Код:
if((x>a)&(x<b)){
}

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

Ср ноя 28, 2007 12:48:55

lexmulya писал(а):Потому что нужно писать
Код:
if((x>a)&(x<b)){
}

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


Лучше &&
Ответить