CodeVision AVR в вопросах и ответах
-
Alex_ka
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Ср сен 04, 2019 17:59:23
- Откуда: Гомель
Re: CodeVision AVR в вопросах и ответах
Спасибо за подсказку. Учту.
Re: CodeVision AVR в вопросах и ответах
Там ещё непочатый край для учёбы, согласись Alex_ka)?
Re: CodeVision AVR в вопросах и ответах
да тут ещё много надо подсказок))
например зачем писать отдельно две переменных...
если можно писать за один раз...

а это...
вообще можно записать в одну переменную...

и т.д.
например зачем писать отдельно две переменных...
Код: Выделить всё
delay_ms(100);
TX_c_eep();
delay_ms(100);
TX_d_eep();
delay_ms(100);если можно писать за один раз...

а это...
Код: Выделить всё
unsigned char in_PINB0, in_PINB1, in_PINB2, in_PINB3;
in_PINB0 = PINB.0;
in_PINB1 = PINB.1;
in_PINB2 = PINB.2;
in_PINB3 = PINB.3;
if(!in_PINB0 && !in_PINB1 && !in_PINB2 && !in_PINB3) {c=0; d=0;;break;}; // от DTMF 1вообще можно записать в одну переменную...

и т.д.
-
Alex_ka
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Ср сен 04, 2019 17:59:23
- Откуда: Гомель
Re: CodeVision AVR в вопросах и ответах
Там ещё непочатый край для учёбы, согласись Alex_ka)?
Согласен.Мы же самоучки. Без адекватной помощи как от Романа, никак. За. что ему отдельная благодарность, что потратил время на мой вопрос и на примере разъяснил.- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: CodeVision AVR в вопросах и ответах
совершенно верно. прочитал весь порт в переменную, а потом проверяй биты. и ничего не будет пропущено.roman.com писал(а):вообще можно записать в одну переменную...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: CodeVision AVR в вопросах и ответах
Вопрос только в том, что а нужна ли эта экономия? И зачем? Заради чего?
Понятно, раньше экономили из за ресурсов. А сейчас? По привычке?
А то что страдает наглядность? Понятность исходного кода? Нет, давайте изображать из себя хакеров! Ну тогда да.
Понятно, раньше экономили из за ресурсов. А сейчас? По привычке?
А то что страдает наглядность? Понятность исходного кода? Нет, давайте изображать из себя хакеров! Ну тогда да.
Re: CodeVision AVR в вопросах и ответах
Не страдает наглядность. Даже наоборот.
4 кнопки выглядят так:
c = 0b00001111;
И что пострадало ?))

4 кнопки выглядят так:
c = 0b00001111;
И что пострадало ?))

Re: CodeVision AVR в вопросах и ответах
0b00001111; - это магические цифры. Если писать по нормальному, то их быть не должно. Каждый разряд должен быть описан. Это нужно объяснять? Удивительно, что тебя этому нужно учить. В принципе, ты можешь писать как угодно, как тебе нравится. Только это будет выглядеть как неграмотный текст с ошибками. Ну и мнение о тебе соответствующее.
Re: CodeVision AVR в вопросах и ответах
это не магические цифры а биты в байте.))
Если писать по нормальному, то открываем даташит с смотрим как должно быть.
См. выше.

Если писать по нормальному, то открываем даташит с смотрим как должно быть.
См. выше.

-
codenamehawk
- Вымогатель припоя
- Сообщения: 527
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: CodeVision AVR в вопросах и ответах
roman.com писал(а):вообще можно записать в одну переменную...
Так написано, чтобы было понятно тому, кому это предназначалось.
И такой код позволит легко переназначить часть входов на другой порт.
Re: CodeVision AVR в вопросах и ответах
0b00001111; - это магические цифры. Если писать по нормальному, то их быть не должно.
Открываем даташит от разработчиков МК... и что мы видим ?
Что такое EEMPE... ? Что такое EEPE... ?
и т.д.
Это не я написал. Это написали разработчики МК.
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))
Вот их адрес (из того же даташита).

- Вложения
-
- Screenshot_1.jpg
- (54.69 КБ) 438 скачиваний
- VNS
- Говорящий с текстолитом
- Сообщения: 1614
- Зарегистрирован: Пт дек 10, 2021 12:48:46
- Откуда: Тюмень
Re: CodeVision AVR в вопросах и ответах
Что такое EEMPE... ? Что такое EEPE... ?
и т.д.
Это не я написал. Это написали разработчики МК.

и т.д.
Это не я написал. Это написали разработчики МК.

Если ты в даташите кроме картинок ничего больше не видишь, то на разработчика пенять не нужно. До примера он подробно обо всём написал и всё пояснил:
Спойлер

И научись свои партянки под спойлер прятать…

Re: CodeVision AVR в вопросах и ответах
прежде чем писать ответ... хотя бы сначала прочитал вопрос ))


-
Alex_ka
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Ср сен 04, 2019 17:59:23
- Откуда: Гомель
Re: CodeVision AVR в вопросах и ответах
Мужики, в чем срач? Ну если вы действительно профи, ну так приведите пример, а не голословно показывайте то, что ваш уровень выше. Будет полезно и таким как я, которые сами познают и некому научить.
Re: CodeVision AVR в вопросах и ответах
пример ? так никто ничего не спрашивает))


Re: CodeVision AVR в вопросах и ответах
Это не я написал. Это написали разработчики МК.
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))
Что тебя смущает? Что не так у разработчиков?
И чётче выражай свои мысли.
Re: CodeVision AVR в вопросах и ответах
для тех кто в танке))
если разработчикам МК используют битовые операции... значит и нам можно))
осталось увидеть полную схему и программу...

если разработчикам МК используют битовые операции... значит и нам можно))
Alex_ka писал(а):там кнопок нет, там управление на порт "В" подаётся с микросхемы DTMF НТ9170. т. е с телефонного аппарата, в тональном наборе приходит комбинация цифр и меняет состояние на порту "В".
осталось увидеть полную схему и программу...

Re: CodeVision AVR в вопросах и ответах
если разработчикам МК используют битовые операции... значит и нам можно))
Я же говорил не о битовых операциях, а о магических цифрах, как твои 0b00001111, которые непойми что значат. И неважно в каком они виде - двоичном, десятичном...
Как раз у разработчиков всё красиво. С них и старайся брать пример.
Re: CodeVision AVR в вопросах и ответах
выше прозвучало предложение...
вместо этого...
можно просто записать порт "B" в переменную "с"
вот так:
и дальше работаем с битами...
0b00001111;
любому программисту эта запись понятна.
а кому не понятно... идет учиться дальше))
на этом всё.

вместо этого...
Код: Выделить всё
if(!in_PINB0 && !in_PINB1 && !in_PINB2 && !in_PINB3) {c=0; d=0; break;}; // от DTMF 1можно просто записать порт "B" в переменную "с"
вот так:
Код: Выделить всё
с = PINB;и дальше работаем с битами...
0b00001111;
любому программисту эта запись понятна.
а кому не понятно... идет учиться дальше))
на этом всё.

Re: CodeVision AVR в вопросах и ответах
вместо этого...
ЭТО вообще пишется не так. Сначала описываешь подключение (схему, физику). Через define, либо
через const переменные или ещё как. И это всё находится в одном месте, обычно в .h файле.
Код: Выделить всё
#define DTMF0 PINB.0 //вот твоё подключение, физика
#define DTMF1 PINB.1
#define DTMF2 PINB.2
#define DTMF3 PINB.3Теперь тебе пофигу что и как подключено. Ты схему в упор не видишь! Ты работаешь с логикой.
Код: Выделить всё
if (!DTMF0 && !DTMF1 && !DTMF2 && !DTMF3) {
c = 0;
d = 0;
break;
}Теперь, ты можешь как хочешь менять схему, логика (текст программы) останется неизменной!
Можно и по другому, вдруг ты хочешь скорости или компактности. Создаёшь макро или инлайн
функцию:
Код: Выделить всё
#define get_dtmf() (PORTB & 0b1111) //опять же, все в одном месте, лучше в header-е
же ничего меняться не будет и логика останется прежней:
Код: Выделить всё
if (!get_dtmf()) {
c = 0;
d = 0;
break;
}
этот DTMF и гадать, а что же это значит 0b00001111? Что именно содержится в этих битах?
Устал я от тебя, Рома.)