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 в вопросах и ответах
[uquote="OKF",url="/forum/viewtopic.php?p=4749827#p4749827"]Там ещё непочатый край для учёбы, согласись Alex_ka)?[/uquote]Согласен.Мы же самоучки. Без адекватной помощи как от Романа, никак. За. что ему отдельная благодарность, что потратил время на мой вопрос и на примере разъяснил.
- 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 в вопросах и ответах
[uquote="OKF",url="/forum/viewtopic.php?p=4750017#p4750017"]0b00001111; - это магические цифры. Если писать по нормальному, то их быть не должно.[/uquote]
Открываем даташит от разработчиков МК... и что мы видим ?

Что такое EEMPE... ? Что такое EEPE... ?
и т.д.
Это не я написал. Это написали разработчики МК.
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))
Вот их адрес (из того же даташита).


Открываем даташит от разработчиков МК... и что мы видим ?
Что такое EEMPE... ? Что такое EEPE... ?
и т.д.
Это не я написал. Это написали разработчики МК.
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))
Вот их адрес (из того же даташита).
- Вложения
-
- Screenshot_1.jpg
- (54.69 КБ) 439 скачиваний
- VNS
- Говорящий с текстолитом
- Сообщения: 1614
- Зарегистрирован: Пт дек 10, 2021 12:48:46
- Откуда: Тюмень
Re: CodeVision AVR в вопросах и ответах
[uquote="roman.com",url="/forum/viewtopic.php?p=4750031#p4750031"]Что такое EEMPE... ? Что такое EEPE... ?
и т.д.
Это не я написал. Это написали разработчики МК.
[/uquote]
Если ты в даташите кроме картинок ничего больше не видишь, то на разработчика пенять не нужно. До примера он подробно обо всём написал и всё пояснил:
И научись свои партянки под спойлер прятать… 
и т.д.
Это не я написал. Это написали разработчики МК.
Если ты в даташите кроме картинок ничего больше не видишь, то на разработчика пенять не нужно. До примера он подробно обо всём написал и всё пояснил:
Спойлер

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

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

Re: CodeVision AVR в вопросах и ответах
[uquote="roman.com",url="/forum/viewtopic.php?p=4750031#p4750031"]Это не я написал. Это написали разработчики МК.
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))[/uquote]
Что тебя смущает? Что не так у разработчиков?
И чётче выражай свои мысли.
Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))[/uquote]
Что тебя смущает? Что не так у разработчиков?
И чётче выражай свои мысли.
Re: CodeVision AVR в вопросах и ответах
для тех кто в танке))
если разработчикам МК используют битовые операции... значит и нам можно))

если разработчикам МК используют битовые операции... значит и нам можно))
осталось увидеть полную схему и программу...Alex_ka писал(а):там кнопок нет, там управление на порт "В" подаётся с микросхемы DTMF НТ9170. т. е с телефонного аппарата, в тональном наборе приходит комбинация цифр и меняет состояние на порту "В".
Re: CodeVision AVR в вопросах и ответах
[uquote="roman.com",url="/forum/viewtopic.php?p=4750619#p4750619"]если разработчикам МК используют битовые операции... значит и нам можно))[/uquote]
Я же говорил не о битовых операциях, а о магических цифрах, как твои 0b00001111, которые непойми что значат. И неважно в каком они виде - двоичном, десятичном...
Как раз у разработчиков всё красиво. С них и старайся брать пример.
Я же говорил не о битовых операциях, а о магических цифрах, как твои 0b00001111, которые непойми что значат. И неважно в каком они виде - двоичном, десятичном...
Как раз у разработчиков всё красиво. С них и старайся брать пример.
Re: CodeVision AVR в вопросах и ответах
выше прозвучало предложение...
вместо этого...
можно просто записать порт "B" в переменную "с"
вот так:
и дальше работаем с битами...
0b00001111;
любому программисту эта запись понятна.
а кому не понятно... идет учиться дальше))
на этом всё.

вместо этого...
Код: Выделить всё
if(!in_PINB0 && !in_PINB1 && !in_PINB2 && !in_PINB3) {c=0; d=0; break;}; // от DTMF 1вот так:
Код: Выделить всё
с = PINB;0b00001111;
любому программисту эта запись понятна.
а кому не понятно... идет учиться дальше))
на этом всё.
Re: CodeVision AVR в вопросах и ответах
[uquote="roman.com",url="/forum/viewtopic.php?p=4750652#p4750652"]вместо этого...[/uquote]
ЭТО вообще пишется не так. Сначала описываешь подключение (схему, физику). Через define, либо
через const переменные или ещё как. И это всё находится в одном месте, обычно в .h файле.
Теперь тебе пофигу что и как подключено. Ты схему в упор не видишь! Ты работаешь с логикой.
Теперь, ты можешь как хочешь менять схему, логика (текст программы) останется неизменной!
Можно и по другому, вдруг ты хочешь скорости или компактности. Создаёшь макро или инлайн
функцию:Тогда если ты меняешь подключение, ты только правишь макро-функцию get_dtmf(). В программе
же ничего меняться не будет и логика останется прежней:И тебе не придётся лазить по всей программе, выискивая порты и биты к которому подключен
этот DTMF и гадать, а что же это значит 0b00001111? Что именно содержится в этих битах?
Устал я от тебя, Рома.)
ЭТО вообще пишется не так. Сначала описываешь подключение (схему, физику). Через 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? Что именно содержится в этих битах?
Устал я от тебя, Рома.)