CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: CodeVision AVR в вопросах и ответах

Сообщение elf »

Спасибо,действительно так проще.
Только че-то у меня примера нету в кодевижене у меня версия 2.05.0.
Если не трудно выложите пример.спасибо
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: CodeVision AVR в вопросах и ответах

Сообщение oleg110592 »

примеры тут: http://www.hpinfotech.ro/cvavr_examples.html
только
T6963C Examples for the Toshiba T6963C graphic LCD controller.
Require CodeVisionAVR Evaluation or Standard V2.05.4 or later.
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

Re: CodeVision AVR в вопросах и ответах

Сообщение elf »

Спасибо большое.Очень помогло.
Александр 2677
Встал на лапы
Сообщения: 89
Зарегистрирован: Пн фев 22, 2010 11:16:00

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 2677 »

Добрый день. Помогите разобраться с кодом. Здесь на форуме нашёл ссылку с примером бегущей строки на LCD http://www.stas633.narod.ru/ishodnic/beg_stroka.html

Попробовал повторить, но у меня почему то строка не доходит до конца 7 знако-мест

Код: Выделить всё

 // сдвиг бегущей строки
            beg_str=1;
            if(beg_str){
            for(i=0;i<19;i++)lcd_write_byte(0xC7+i,lcd_read_byte(0xC8+i));
            beg_str=0;

            // запись очередного символа в крайний правую позицию

            lcd_gotoxy(19,1);
            lcd_putchar(ish_str[n_sim]);
            if(++n_sim>m_end)n_sim=1;

            } //


В архиве лежит проект PROTEUS и Codewision.
Вложения
Бегущая строка LCD вариант №2.rar
(785.34 КБ) 132 скачивания
Aмstroн
Встал на лапы
Сообщения: 107
Зарегистрирован: Сб июл 27, 2013 10:52:37
Откуда: Украина

Re: CodeVision AVR в вопросах и ответах

Сообщение Aмstroн »

Методом научного тыка сделал так :shock:

Код: Выделить всё

 for(i=0;i<19;i++)lcd_write_byte(192+i,lcd_read_byte(193+i));

Что это значит не знаю , но бежит на всю строку :beer:
Александр 2677
Встал на лапы
Сообщения: 89
Зарегистрирован: Пн фев 22, 2010 11:16:00

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 2677 »

Спасибо, действительно помогло. Осталось разобраться как это работает :beer:
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Всем привет. В CVavr не новичок (уже 2 года занимаюсь) но возникла странная проблема в компиляторе...
if (day>5) {
if (hour[0]==22 || hour[0]==12) {puts("ok_g");}
if (hour[0]==1 || hour[0]==17) {puts("ok_t");} //***
}

if (day<6) {
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
if (hour[0]==1 || hour[0]==17) {puts("ok_t");}
}
Вот "значимый" кусок кода...Проблема в том, что когда реально day<6 и hour[0]=22 посылаются символы "ok_t", а не "ok_g" как это должно быть.... Как только я комментирую строку, обозначенную звездочками - все становится на свои места....но если в эту строку "со звездочками" добавить включение порта, порт не включается (значит условие строки со звездочками не отрабатывает!!!)....отсылка символов "ok_t" и "ok_g"
только в этих строках...Сама по себе программа большая, писал ее я...CVavr v2.04.4a...Может ли быть, что у компилятора есть ограничения на условия If (к примеру до 60 штук) ?...
Последний раз редактировалось Volgol_555 Сб дек 07, 2013 21:35:11, всего редактировалось 1 раз.
Самое гениальное - всегда самое простое
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

if (day<6) {
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
Тут скобки не должно быть случайно ? :)
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Аlex писал(а):
if (day<6) {
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
Тут скобки не должно быть случайно ? :)

Упс...Скопировал некорректно. В проге у меня со скобками все ОК!. Так что проблема осталась...какие есть ещё идеи?
Самое гениальное - всегда самое простое
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: CodeVision AVR в вопросах и ответах

Сообщение oleg110592 »

а как переменная day объявлена?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

Volgol_555 писал(а):Всем привет. В CVavr не новичок (уже 2 года занимаюсь) но возникла странная проблема в компиляторе...

Попробуйте для начала очистить проект(project->Clean up)и снова откомпилировать.Вроде никаких изъянов в этом участке кода нет. И да как объявлена переменная тоже интересно...
А вот еще не совсем понятно

Код: Выделить всё

if (day>5){}
if (day<6) {}

Тут как бы получается неопределенность в области 5<day<6 это все правильно?
Может расскажете нам логику работы данного участка, может что умное в голову придет. Возможно и самостоятельно ошибка найдется :)))
Вообще если это одна группа условий, то лучше использовать if...else if...else чтобы самому не запутаться в логике. Я так думаю.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Проект чистить этой функцией никогда не пробовал)... day объявлен int16, а на счет неопределенности...вроде как все просто....когда day>5, получаем фактически day=6 и 7(т.е. у меня это суббота и воскресенье, а далее автоматом day=1), там мы работаем по одному расписанию времени, когда day<6 получаем дни 1, 2, 3, 4, 5 - это тоже дни недели, у которых свое расписание...Я так понимаю, это ошибки компилятора...возможно он не справляется с данным количеством условий...ведь в самой проге этих условий if одно в другом (макс 3 ур.рекурсии) штук на 60 будет....Тут конечно минус, что я самоучка на Си, потому возможно нюансов не вижу...
Самое гениальное - всегда самое простое
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: CodeVision AVR в вопросах и ответах

Сообщение oleg110592 »

Volgol_555 писал(а):day объявлен int16
попробуйте unsigned int
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Тогда уж unsigned char. Дней то всего 7, зачем там 2 байта :roll:
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Аlex писал(а):Тогда уж unsigned char. Дней то всего 7, зачем там 2 байта :roll:

Затем, что нельзя с char проводить действия как с int....а каждый раз преобразование писать...уже лучше int :)

Clean UP проекта и объявление day другими типами не помогло...
Последний раз редактировалось Volgol_555 Вс дек 08, 2013 00:59:11, всего редактировалось 1 раз.
Самое гениальное - всегда самое простое
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Volgol_555 писал(а):Затем, что нельзя с char проводить действия как с int....
Про какие это Вы действия говорите, которые нельзя производить на uint8 ? Сравнение на больше/меньше ? :)
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Аlex писал(а):
Volgol_555 писал(а):Затем, что нельзя с char проводить действия как с int....
Про какие это Вы действия говорите, которые нельзя производить на uint8 ? Сравнение на больше/меньше ? :)

Я говорю про инкрементацию. Ведь в проекте я инкрементирую "вручную"....я с char явно не смогу написать вот так ++day;
Самое гениальное - всегда самое простое
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: CodeVision AVR в вопросах и ответах

Сообщение oleg110592 »

Вот код в кодевижене - программа до nop не дойдет (настройки кодевижена по умолчанию):

Код: Выделить всё

char i = 0;
unsigned long cnt = 0;

main(void)
{   

  while(1)
   {

     for(i = 6; i >= 0; i--)
      {
        cnt++;
      }

     cnt++;
     if(cnt > 9999999) cnt = 0;
     asm("nop");
   }

 
}

И кодевижен ошибку не выдаст - другие компиляторы выдают
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: CodeVision AVR в вопросах и ответах

Сообщение Flasher »

Почему до ноп не дойдет?
Почему префиксная унарная операция не должна пройти?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Volgol_555 писал(а):я с char явно не смогу написать вот так ++day;
Почему ? Переменная day, хоть она будет и char, всё равно увеличится.

oleg110592 писал(а):Вот код в кодевижене - программа до nop не дойдет (настройки кодевижена по умолчанию):
Это Вы к чему ? Она у Вас не дойдёт и с unsigned int :)
Ответить

Вернуться в «AVR»