Страница 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); //

а какая директива нужна? :oops:

Добавлено: Пн мар 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); //

а какая директива нужна? :oops:
А зачем в цикле 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. Фигасе... :shock: Только сейчас заметил. Даже простенькая прога с 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
ну я массивами не знаком пока что... :roll:

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

Вот в книгах дается описание, что и как, но я не понимаю, что вписывать сюда, например:

#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?