Страница 419 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт окт 03, 2025 12:27:03
roman.com
а потом постоянно надо возвращаться в начало программы и смотреть чему равен define...
бред полный !
по нормальному объявляешь переменную по имени которой понятно за что отвечает эта переменная.
а потом записывает в переменную состояние порта "B"
далее... в программе мы знаем что в переменно "port_B" записано состояние порта "B".
это понятно по имени переменной.
и далее спокойно работаем с переменно "port_B".
без всяких define...
кому-то точно надо пойти дальше учиться))
Устал я от тебя.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт окт 03, 2025 12:53:16
>TEHb<
roman.com писал(а):а потом постоянно надо возвращаться в начало программы и смотреть чему равен define...
Зачем? В самом дефайне отражено его предназначение. Конструкция типа if (VHODNOY_SIGNAL_PRIYOMNIKA == 1 ) {...} недостаточно отражает логику происходящего? Какая разница к какой конкретно ножке там за кулисами подключен этот сигнал?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт окт 03, 2025 13:10:56
roman.com
разница в читаемости кода...
в переменной "port_B" записано состояние порта "B".
больше ничего не надо.
всё ясно.
если кому надо раздуть код своей программы до немыслимых размеров... обращайтесь к
OKF и
>TEHb< ))

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт окт 03, 2025 13:55:11
OKF
Тяжелый случай.(
Изменил ты подключение. И что будешь переписывать везде port_b на port_d?
Даже, если ничего не меняешь, get_dtmf() уже говорит сам за себя. И даже комментарии излишни.
И неважно как ты его получишь, какие биты к каким портам подключены.
Это же не ассемблер. И даже там стараются отделять подключение и логику.
Рома, удачи!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт окт 03, 2025 14:20:43
>TEHb<
Ну классно. А если часть сигналов заведены на порт Б, а часть на порт А? Всё, переменную никак не назвать.
Если ноги-порты задавать дефайнами, то можно сразу и их настройку проводить. То есть программа настраивается в одной точке.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт окт 03, 2025 15:16:36
HardWareMan
[uquote="roman.com",url="/forum/viewtopic.php?p=4750681#p4750681"]а потом постоянно надо возвращаться в начало программы и смотреть чему равен define...
бред полный ![/uquote]
Зачем? Все современные IDE выводят значения констант в контекстной подсказке просто после наведения на имя константы. А в режиме отладки так же можно смотреть и значения переменных...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 14, 2026 13:50:50
Thinnnfor
Добрый вечер уважаемые ! Как в программе организовать рестарт МК ? Ну например в PIC CCS есть команда restart ( cpu ) точно не помню как она пишется но она есть. А в CV AVR такой нет как я понял.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 14, 2026 14:30:27
veso74
asm("jmp 0"); или аналогично в выбранном компиляторе (периферия не сбрасывается),
но лучше с WDT: wdt_enable(WDTO_15MS); и какая-то пауза или бесконечный цикл до перезапуска.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 14, 2026 20:12:03
Thinnnfor
Ну то есть заставить собачий таймер отработать ? ...
Добавлено after 3 hours 15 minutes 49 seconds:
Да ! Там одна кнопка , краткое нажатие меняет параметры отображения , длинное - процедура изменения параметров ... Всё на динамической индикации , и в ней же сброс сторожевого таймера ... Можно ещё сделать более длинное нажатие на кнопку , и тогда сделать бесконечный цикл без входа в индикацию , конечно тогда WDT сбросит МК.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт фев 27, 2026 17:20:37
Thinnnfor
Как в CV AVR реализовать передачу строки ( не строчной переменной ) в функцию или процедуру ?
Такой код не работает , хотя вроде всё логично ...
Код: Выделить всё
const unsigned char sim[33]=
{65,160,66,161,224,69,163,164,165,166,75,167,77,72,79,168,80,67,84,169,170,88,225,171,172,226,196,174,173,175,176,177}; //коды Кириллицы для китайских LCD
const char sim1[33]=
{'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ш','Щ','Ь','Ы','Ъ','Э','Ю','Я'}; //коды Кириллицы винды
void pint_rus (char str[])
{
unsigned char j,j1,size ;
size=sizeof(str)-1; // определяем длинну строки
for(j=0;j<size;j++); // начинаем перекодировку символов из виндовых в китайские LCD
{
for(j1=0;j1<33;j1++)
if (sim1[j1]==str[j])
lcd_putchar(sim[j1]); // выводим на LCD РУССКИЙ текст
}
}
while (1)
{
lcd_gotoxy(0,3);
pint_rus("ПРЕВЕД МЕДВЕД");
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб фев 28, 2026 07:02:08
Rapra
В Си нет такого типа - "строка". Поэтому строка - это обычный массив элементов типа char. А передача массива в функцию - по указателю.
Код: Выделить всё
void Print(const char *str, unsigned int len)
{
while(len--)
{
....
}
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 10:39:32
ARV
sizeof не определяет размер строки! Размер строки определяет strlen
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 14:59:49
Thinnnfor
Ну как бы размер строчной переменной прекрасно как раз таки определяет.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 15:15:11
ARV
Определяет, говорите? И даже по передаваемому в параметре функции указателю тоже определяет?
sizeof может определить только размер константной строки.
Но вообще говоря, для перекодировки строк не надо знать их длины, достаточно брать по одному символу, пока не возьмется 0.
Добавлено after 3 minutes 21 second:
Как-то так:
Код: Выделить всё
char c;
while(c=*str++) {
encode_char(c); // обработка очередного символа строки str
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 15:53:04
Аlex
Thinnnfor писал(а):хотя вроде всё логично ...
Где Вы видите логику в :
?
Что ожидаете в этом случае от
sizeof ? И почему именно такие ожидания ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 16:37:07
Thinnnfor
Ну вот кусок программы для часов-термометра которых уже несколько штук и работают 5 лет.
Реализация бегущей строки для светодиодных матриц 8х8 , выкладывать коды функций нет смысла они работают. Ну и sizeof вполне работает .
Код: Выделить всё
char unsigned str2[]=" ТЕМПЕРАТУРА ВОЗДУХА ";// глобальная строковая переменная
while (1) // основной цикл программы
{
a=5; // скорость бегущей строки, не будем заморачиваться
size=sizeof(str2)-1; // определяем размер строковой переменной
for(k=1;k<size;k++) //выводим текст " ТЕМПЕРАТУРА ВОЗДУХА "
{
simv=(str2[k]) ; // определяем код очередного символа в выводимой строке
obrzap (simv) ; // заполняем невидимую нуль-матрицу ( справа )для последующего сдвига в видимую область, из таблицы 8*8 для матрицы светодиодов
sdvig(); //сдвиг 8 строк * 8 раз в лево
} // далее повторяемся для следующего символа пока строка не кончится
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 16:52:28
Rapra
В таком виде sizeof срабатывает. Но при передаче в функцию теряется размер строки (массива элементов char)/
Длину строки в функцию лучше передавать в явном виде, как показывал ранее. Это позволит выводить строку не полностью, а также не нуль-терминированные строки
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 17:19:20
Thinnnfor
Вот в том и вопрос... Хотелось бы не писать одно и тоже для вывода каждой строки, а сделать функцию в которую будет передаваться только строка.
Добавлено after 1 minute 13 seconds:
Всмысле только содержимое строки
Добавлено after 22 minutes 19 seconds:
Ну и допустим в стандартной библиотеке CV AVR #include <alcd.h>
lcd_putsf("hello word"); работает же !
Почему я не могу написать библиотеку где будет просто print_rus (" привет мир ") просто со скобками и кавычками . Кстати для PIC CCS я переделал стандартную библиотеку , и она именно так работает как надо.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 17:22:43
Adrift
[uquote="Thinnnfor",url="/forum/viewtopic.php?p=4793640#p4793640"]Почему я не могу написать библиотеку где будет просто print_rus (" привет мир ") просто со скобками и кавычками .[/uquote]
Вам же сказали, что для определения длины строки используйте strlen, в чем проблема? Хотя там размер не сильно и нужен...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс мар 01, 2026 17:30:22
Thinnnfor
Thinnnfor писал(а):Кстати для PIC CCS я переделал стандартную библиотеку , и она именно так работает как надо.
Вот так :
Правда только для заглавных букв , но это уже мелочи !
И вызывается вот так :
lcd_rus(" РОССИЯ ФОРЕВЕР ЕВРОПА ГОВНО ");