CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
Спасибо,действительно так проще.
Только че-то у меня примера нету в кодевижене у меня версия 2.05.0.
Если не трудно выложите пример.спасибо
Только че-то у меня примера нету в кодевижене у меня версия 2.05.0.
Если не трудно выложите пример.спасибо
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: CodeVision AVR в вопросах и ответах
примеры тут: 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.
Re: CodeVision AVR в вопросах и ответах
Спасибо большое.Очень помогло.
-
Александр 2677
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Пн фев 22, 2010 11:16:00
Re: CodeVision AVR в вопросах и ответах
Добрый день. Помогите разобраться с кодом. Здесь на форуме нашёл ссылку с примером бегущей строки на LCD http://www.stas633.narod.ru/ishodnic/beg_stroka.html
Попробовал повторить, но у меня почему то строка не доходит до конца 7 знако-мест
В архиве лежит проект PROTEUS и Codewision.
Попробовал повторить, но у меня почему то строка не доходит до конца 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 скачивания
Re: CodeVision AVR в вопросах и ответах
Методом научного тыка сделал так
Что это значит не знаю , но бежит на всю строку
Код: Выделить всё
for(i=0;i<19;i++)lcd_write_byte(192+i,lcd_read_byte(193+i));Что это значит не знаю , но бежит на всю строку

-
Александр 2677
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Пн фев 22, 2010 11:16:00
Re: CodeVision AVR в вопросах и ответах
Спасибо, действительно помогло. Осталось разобраться как это работает 

- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Всем привет. В 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 штук) ?...
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 в вопросах и ответах
Тут скобки не должно быть случайно ?if (day<6) {
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Тут скобки не должно быть случайно ?if (day<6) {
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
Упс...Скопировал некорректно. В проге у меня со скобками все ОК!. Так что проблема осталась...какие есть ещё идеи?
Самое гениальное - всегда самое простое
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: CodeVision AVR в вопросах и ответах
а как переменная day объявлена?
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
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 в вопросах и ответах
Проект чистить этой функцией никогда не пробовал)... 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 в вопросах и ответах
попробуйте unsigned intVolgol_555 писал(а):day объявлен int16
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Тогда уж unsigned char. Дней то всего 7, зачем там 2 байта 
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Тогда уж unsigned char. Дней то всего 7, зачем там 2 байта
Затем, что нельзя с char проводить действия как с int....а каждый раз преобразование писать...уже лучше int
Clean UP проекта и объявление day другими типами не помогло...
Последний раз редактировалось Volgol_555 Вс дек 08, 2013 00:59:11, всего редактировалось 1 раз.
Самое гениальное - всегда самое простое
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Про какие это Вы действия говорите, которые нельзя производить на uint8 ? Сравнение на больше/меньше ?Volgol_555 писал(а):Затем, что нельзя с char проводить действия как с int....
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Про какие это Вы действия говорите, которые нельзя производить на uint8 ? Сравнение на больше/меньше ?Volgol_555 писал(а):Затем, что нельзя с char проводить действия как с int....
Я говорю про инкрементацию. Ведь в проекте я инкрементирую "вручную"....я с char явно не смогу написать вот так ++day;
Самое гениальное - всегда самое простое
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: CodeVision AVR в вопросах и ответах
Вот код в кодевижене - программа до 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");
}
}И кодевижен ошибку не выдаст - другие компиляторы выдают
Re: CodeVision AVR в вопросах и ответах
Почему до ноп не дойдет?
Почему префиксная унарная операция не должна пройти?
Почему префиксная унарная операция не должна пройти?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Почему ? Переменная day, хоть она будет и char, всё равно увеличится.Volgol_555 писал(а):я с char явно не смогу написать вот так ++day;
Это Вы к чему ? Она у Вас не дойдёт и с unsigned intoleg110592 писал(а):Вот код в кодевижене - программа до nop не дойдет (настройки кодевижена по умолчанию):