CodeVision AVR в вопросах и ответах
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Не вижу проблемы - достаточно завести флаг приема строки, который необходимо поднимать по приходу символа конца строки и сбрасывать в процедуре чтения строки, тогда в главном цикле вызывать gets() достаточно лишь тогда, когда флаг готовности строки взведен.dm211 писал(а):Если gets(detchar тоже) засунуть в while(1), то работает только он, ... это еще одна проблема вдобавок имеющимся.
Если известна длина строки, значит конец строки как-то определяется? Вот по этому признаку и работай.klok писал(а):Другая проблема - в запросах, что сыпятся контроллеру нет символа конца строки, как с этим быть? запросы короткие, 2-3 байта...
хочу сделать вот эту схему:
http://radiokot.ru/circuit/digital/home/26/
что нужно для того, что бы создать проект в CodeVision AVR?
http://radiokot.ru/circuit/digital/home/26/
что нужно для того, что бы создать проект в CodeVision AVR?
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
*Trigger* писал(а):...что нужно для того, что бы создать проект в CodeVision AVR?
Нет, визард нужен не для создания проекта, а для подготовки шаблона программы с кодом инициализации периферии, проект же создаётся командой "File->New...Project" и настраивается командой "Project->Configure". В любой момент можно подготовить кусок кода с помощью визарда и либо вставить этот код в программу целиком (так вначале и делают), либо использовать лишь нужную часть, например, вызвав в визарде командой "File->Program preview" код, соответствующий тому, что в визарде успели "понатыкать" мышой.dm211 писал(а):Код визард CVAVR ...
Конкатенация - понятие для строк, поэтому приходится догадываться, что это слово означает по отношению к числам, если нужно получить число из набора чисел, которые рассматриваются как цифры в позиционной записи, то и нужно действовать согласно правилам позиционной записи - в чем проблема-то?boobonick писал(а):...как можно сделать конкатенацию чисел в си?
Допустим,имеется набор чисел 1,0,1,0,1,1 и нужно сделать из них одно число 101011, ...
Код: Выделить всё
int iResult, // результат преобразования
iBase, // база (основание) системы счисления
i;
#define _NDIGS_ 8
int iaDigs[_NDIGS_];
iBase = 10; // чем черт не шутит? :)))
for (iResult=0, i=_NDIGS_; i; ){
iResult *= iBase;
iResult += iaDigs[--i];
}
Разумеется, если основание системы счисления окажется степенью основания системы счисления компьютера, то вместо умножений выгоднее применять сдвиги.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Не за что. Только направление обхода массива не забудь поменять, если в конце массива будут младшие разряды, а не старшие, как в этом примере. Если принимать цифры по одной (например, из последовательного канала), то можно еще проще:
Код: Выделить всё
пока (не пришёл символ-разделитель) {
iResult *= iBase;
iResult += (очередной_символ-цифра - '0');
}Yellow Tiger писал(а):Не за что. Только направление обхода массива не забудь поменять, если в конце массива будут младшие разряды, а не старшие, как в этом примере. Если принимать цифры по одной (например, из последовательного канала), то можно еще проще:Код: Выделить всё
пока (не пришёл символ-разделитель) {
iResult *= iBase;
iResult += (очередной_символ-цифра - '0');
}
программист я никакой и не чего не понял.
а что нужно в визарде выставлять?
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Тогда опиши свою задачу поточнее.*Trigger* писал(а):программист я никакой и не чего не понял.
Тип процессора, тактовую частоту системы, таймеров, АЦПа, конфигурацию входов/выходов, конфигурацию периферийных устройств. Если что-то не используется, то оставить в визарде без имзменений - насколько я помню, там все начальные значения - "выключено" (таймеры, АЦП, UART, ...).*Trigger* писал(а):а что нужно в визарде выставлять?
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
- Synergetik
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Чт фев 28, 2008 23:54:35
- Откуда: Воскресенск, МО
- Контактная информация:
Mr.Denis писал(а):А как мне это всё преобразовать в нормальный вид?
Это и есть нормальный вид - так в переменных типа char (и не только в них) хранятся закодированные ASCII-символы. Если нужно вывести символы на консоль, то в функции printf нужно указывать %c. Если же нужно получить значение одноразрядного числа "d", то вычисляем его так: d=c-'0', где "c" - получаемый закодированный символ. В выражении символ '0' автоматически преобразуется в его ASCII-эквивалент, либо можно указать явно: d=c-48.
Хотя с обменом между ПК и МК незнаком, однако кое-что, надеюсь, соображаю в Си.