Страница 36 из 115
Добавлено: Вс мар 29, 2009 20:26:50
SeregaT
Это было прописано. Вот сейчас USART настроил, на sprintf вроде перестало ругаться, но вот на lcd_buffer всёравно ругается.
Добавлено: Вс мар 29, 2009 20:32:56
sema
глянь в c:\cvavr\examples\ проекты DS18B20 и DS1820
а мне на поезд пора бежать, в Москву в коммадировку еду
Добавлено: Вс мар 29, 2009 20:51:14
SeregaT
Ага, вроде работает

надо было прописать
char lcd_buffer[33]; Спасибо за советы...
Добавлено: Вс мар 29, 2009 21:16:18
Arlleex
Я вот читаю...
что такое тело и выражение?
Выражение это типа А=12, а тело?
Добавлено: Пн мар 30, 2009 08:41:06
SeregaT
Для того, чтобы на LCD выводить кириллицу, надо прошивать в контроллер дисплея соответствующие шрифты, или можно как-то программно сделать?
Добавлено: Пн мар 30, 2009 11:30:09
Arlleex
char i; //
for (i=5;i<10;++i;) {
PORTD.0=1; //
delay_ms(100); //
PORTD.0=0; //
delay_ms(100); //
а какая директива нужна?

Добавлено: Пн мар 30, 2009 12:18:25
SeregaT
Stalker46 писал(а):char i; //
for (i=5;i<10;++i;) {
PORTD.0=1; //
delay_ms(100); //
PORTD.0=0; //
delay_ms(100); //
а какая директива нужна?

А зачем в цикле for точка с запятой после 5, 10, i...? Там просто запятую надо. Ну и закрывающую фигурную скобку.
Добавлено: Пн мар 30, 2009 13:23:30
Pippeytz
А нахрена тибе юсарт для работы с лсд?
Добавлено: Пн мар 30, 2009 13:40:43
Arlleex
все равно указывает на ошибки for,char.
Добавлено: Пн мар 30, 2009 14:12:24
SeregaT
Stalker46 писал(а):все равно указывает на ошибки for,char.
А зачем
char? Объяви переменную
Int i;
Pippeytz писал(а):А нахрена тибе юсарт для работы с лсд?
Хз. Я пока не разобрался, что это такое. Как я понял, это что-то для передачи данных на комп? А с LCD вроде и без этого работает.
P.S. Фигасе...

Только сейчас заметил. Даже простенькая прога с LCD места занимает дофига и больше... (больше 5 кб). Это нормально, или я так криво прогу состряпал?
Добавлено: Пн мар 30, 2009 15:13:35
Arlleex
я хочу попользоваться директивой #define
вот надо заменить фрагмент текста программы на букву А. Как это сделать. Курил справку по этой директиве, но ниче не понял.
Вот фрагмент программы:
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
надо так сделать?
#define A PORTD.0=1;\ // зажигаем 1 светодиод
delay_ms(100);\ // ждем 100 миллисекунд
PORTD.0=0;\ // гасим 1 светодиод
delay_ms(100);\ // ждем 100 миллисекунд
так?
Добавлено: Пн мар 30, 2009 15:18:01
SeregaT
Я пока с #define не разбирался, но тут полюбому фрагмент надо взять в скобки (фигурные).
Добавлено: Пн мар 30, 2009 15:29:07
Arlleex
Читал про прерывания, но опять какша в голове...
прерывания в проекте должны выполнять такую ф-ю: провека работоспособности системы - обработчик прерывания будет мигать светодиодом.
вот некоторый код:
я делаю проект.
При нажатии на кнопку на входе но порта А, выходы потра D задействованы на светодиоды.
дело такое:
нажимаем на кнопку, работает режим 1, нажимаем на кнопку - работает режим 2.
вот код:
// основной код первого режима
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=0; // гасим 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.6=1; // зажигаем 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD. 6=0; // гасим 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.7=1; // зажигаем 8 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.7=0; // гасим 8 светодиод
delay_ms(100); // ждем 100 миллисекунд
// основной код второго режима
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=0; // гасим 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.6=1; // зажигаем 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD. 6=0; // гасим 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.7=1; // зажигаем 8 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=0; // гасим 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.6=1; // зажигаем 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
Добавлено: Пн мар 30, 2009 15:32:43
SeregaT
Делать такую кучу не в виде массива - полный изврат

С массивом можно наверное вдвое больше наворотить, при втрое меньших размерах.
А по поводу режимов.... Наверное надо использовать функцию
Switch
Вот пример:
http://radiokot.ru/forum/viewtopic.php?p=180124#180124
Добавлено: Пн мар 30, 2009 15:36:52
Arlleex
ну я массивами не знаком пока что...

Добавлено: Пн мар 30, 2009 15:43:52
Arlleex
у меня есть небольшие проблемы с пониманием языка Си

.
Вот в книгах дается описание, что и как, но я не понимаю, что вписывать сюда, например:
#if A=15
[группа операторов 1]
#else
[группа операторов 2]
#endif
что вписывать в группу операторов....
Добавлено: Пн мар 30, 2009 15:46:23
SeregaT
Stalker46 писал(а):что вписывать в группу операторов....
Как что? Действия, которые выделывает программа

Добавлено: Пн мар 30, 2009 15:50:30
Arlleex
например кусок программы самой?
Добавлено: Пн мар 30, 2009 15:53:34
SeregaT
Да
Добавлено: Пн мар 30, 2009 15:56:02
Arlleex
interrupt [прерывание] void adc_isr(void)
{
код выполняемый при возникновении разрешенного локально и глобально прерывания
}
а что вписывать в "прерывание"? в квадратные скобки всегда?
всегда ли adc_isr?