Страница 418 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 30, 2025 16:29:56
Alex_ka
Спасибо за подсказку. Учту.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 30, 2025 18:24:16
OKF
Там ещё непочатый край для учёбы, согласись Alex_ka)?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 30, 2025 20:22:15
roman.com
да тут ещё много надо подсказок))

например зачем писать отдельно две переменных...

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

delay_ms(100);
TX_c_eep();
delay_ms(100);
TX_d_eep();
delay_ms(100);
если можно писать за один раз...
:dont_know:

а это...

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

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
вообще можно записать в одну переменную...
:dont_know:
и т.д.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 30, 2025 21:32:26
Alex_ka
[uquote="OKF",url="/forum/viewtopic.php?p=4749827#p4749827"]Там ещё непочатый край для учёбы, согласись Alex_ka)?[/uquote]Согласен.Мы же самоучки. Без адекватной помощи как от Романа, никак. За. что ему отдельная благодарность, что потратил время на мой вопрос и на примере разъяснил.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 30, 2025 21:39:14
Starichok51
roman.com писал(а):вообще можно записать в одну переменную...
совершенно верно. прочитал весь порт в переменную, а потом проверяй биты. и ничего не будет пропущено.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 30, 2025 22:35:06
OKF
Вопрос только в том, что а нужна ли эта экономия? И зачем? Заради чего?
Понятно, раньше экономили из за ресурсов. А сейчас? По привычке?
А то что страдает наглядность? Понятность исходного кода? Нет, давайте изображать из себя хакеров! Ну тогда да.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 00:56:51
roman.com
Не страдает наглядность. Даже наоборот.
4 кнопки выглядят так:
c = 0b00001111;
:idea: :idea: :idea: :idea:
И что пострадало ?))
:tea:

Re: CodeVision AVR в вопросах и ответах

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

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 10:33:11
roman.com
это не магические цифры а биты в байте.))
Если писать по нормальному, то открываем даташит с смотрим как должно быть.
См. выше.
:tea:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 10:56:18
codenamehawk
roman.com писал(а):вообще можно записать в одну переменную...
Так написано, чтобы было понятно тому, кому это предназначалось.
И такой код позволит легко переназначить часть входов на другой порт.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 10:59:21
roman.com
[uquote="OKF",url="/forum/viewtopic.php?p=4750017#p4750017"]0b00001111; - это магические цифры. Если писать по нормальному, то их быть не должно.[/uquote]
Открываем даташит от разработчиков МК... и что мы видим ?

Изображение

Что такое EEMPE... ? Что такое EEPE... ?
и т.д.

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

Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))

Вот их адрес (из того же даташита).

Изображение

:tea:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 14:10:30
VNS
[uquote="roman.com",url="/forum/viewtopic.php?p=4750031#p4750031"]Что такое EEMPE... ? Что такое EEPE... ?
и т.д.

Это не я написал. Это написали разработчики МК.
:tea:[/uquote]
Если ты в даташите кроме картинок ничего больше не видишь, то на разработчика пенять не нужно. До примера он подробно обо всём написал и всё пояснил:
СпойлерИзображение
И научись свои партянки под спойлер прятать… :facepalm:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 14:52:43
roman.com
прежде чем писать ответ... хотя бы сначала прочитал вопрос ))
:tea:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 18:49:03
Alex_ka
Мужики, в чем срач? Ну если вы действительно профи, ну так приведите пример, а не голословно показывайте то, что ваш уровень выше. Будет полезно и таким как я, которые сами познают и некому научить.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср окт 01, 2025 21:54:37
roman.com
пример ? так никто ничего не спрашивает))
:tea:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт окт 02, 2025 10:21:38
OKF
[uquote="roman.com",url="/forum/viewtopic.php?p=4750031#p4750031"]Это не я написал. Это написали разработчики МК.
:tea:

Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))[/uquote]
Что тебя смущает? Что не так у разработчиков?
И чётче выражай свои мысли.

Re: CodeVision AVR в вопросах и ответах

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

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт окт 03, 2025 10:03:26
OKF
[uquote="roman.com",url="/forum/viewtopic.php?p=4750619#p4750619"]если разработчикам МК используют битовые операции... значит и нам можно))[/uquote]
Я же говорил не о битовых операциях, а о магических цифрах, как твои 0b00001111, которые непойми что значат. И неважно в каком они виде - двоичном, десятичном...
Как раз у разработчиков всё красиво. С них и старайся брать пример.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт окт 03, 2025 11:12:35
roman.com
выше прозвучало предложение...
вместо этого...

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

if(!in_PINB0 && !in_PINB1 && !in_PINB2 && !in_PINB3) {c=0; d=0; break;}; // от DTMF 1
можно просто записать порт "B" в переменную "с"
вот так:

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

с = PINB;
и дальше работаем с битами...

0b00001111;

любому программисту эта запись понятна.
:tea:

а кому не понятно... идет учиться дальше))

на этом всё.
:tea:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт окт 03, 2025 12:00:05
OKF
[uquote="roman.com",url="/forum/viewtopic.php?p=4750652#p4750652"]вместо этого...[/uquote]
ЭТО вообще пишется не так. Сначала описываешь подключение (схему, физику). Через 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-е
Тогда если ты меняешь подключение, ты только правишь макро-функцию get_dtmf(). В программе
же ничего меняться не будет и логика останется прежней:

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

if (!get_dtmf()) {
  c = 0;
  d = 0;
  break;
}
И тебе не придётся лазить по всей программе, выискивая порты и биты к которому подключен
этот DTMF и гадать, а что же это значит 0b00001111? Что именно содержится в этих битах?

Устал я от тебя, Рома.)