Дак в симуляторах тоже можно посмотреть алгоритм - в PROTEUS просто нужно включить отображение АСМ листингаKIP писал(а): Пока всё изучаю на теории и в симуляторах - там деление после компиляции проходит быстро.
CodeVision AVR в вопросах и ответах
- Сообщения: 8
- Зарегистрирован: Вс сен 14, 2008 23:18:09
- Реклама
Всем привет! Только начал работать с CVAVR да и с СИ тоже!!Решил сделать часы с выводом времени на LCD и сразу возник вопрос: Как организовать отсчет секунд??Так алгоритм понимаю т.е нужно создать переменную например Sec, далее присвоить значение 0, потом прибавить 1, потом организовать задержку в 1000ms, затем опять прибавить 1 и т.д.
Ну должно быть так
While(sec++); --- а как сделать с интервалом в 1 сек не знаю если delay_ms(1000); то куда его тут вставить??
Короче как заставить программу прибавлять 1 к значению перменной с интервалом в 1000ms с бесконечным циклом?? И еще если у кого нибудь есть какие нибудь ссылки на подобные исходники программ часов(неважно каких) на CVAVR дайте чтоб непосредственно учиться на каком либо протипе проекта!
Ну должно быть так
While(sec++); --- а как сделать с интервалом в 1 сек не знаю если delay_ms(1000); то куда его тут вставить??
Короче как заставить программу прибавлять 1 к значению перменной с интервалом в 1000ms с бесконечным циклом?? И еще если у кого нибудь есть какие нибудь ссылки на подобные исходники программ часов(неважно каких) на CVAVR дайте чтоб непосредственно учиться на каком либо протипе проекта!
IN GOD WE TRUST
вообще-то часы желательно делать по прерываниям от таймера, но в принципе можно и без... вот вам намек, как сделать бесконечный цикл, чтобы в нем каждую секунду переменная увеличивалась на 1:
смотрите внимательно - все четко по вашему алгоритму:
Код: Выделить всё
int Sec;
while(1){
delay_ms(1000);
Sec++;
}Степаныч писал(а):нужно создать переменную например Sec, далее присвоить значение 0, потом прибавить 1, потом организовать задержку в 1000ms, затем опять прибавить 1 и т.д.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Посмотрите на стр. 6 в моей домашней страничке.Степаныч писал(а): если у кого нибудь есть какие нибудь ссылки на подобные исходники на CVAVR дайте чтоб непосредственно учиться на каком либо протипе проекта
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Реклама
посмотрите на домашнюю стр. tych-а

если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Не волнуйтесь - еще ни кому не удалось заставить CVAVR такой создать !KIP писал(а): не создаётся .cof файл c расширением __.c
дело в том что это 2 разных файла.KIP писал(а): Не могу понять в чём дело
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Прекрасно гадать на кофейной гуще которая в каждом доме есть.
А ваш проект не у каждого имеется.
А ваш проект не у каждого имеется.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
результат на лицо... продолжайте в том же духеKIP писал(а):Собствено по ней и осваивал эту связку CV и VMLAB, всё было впорядке.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 3459
- Зарегистрирован: Ср сен 27, 2006 16:18:57
Забейте в VMLAB и используйте в качестве отладчика AVR Studio. Как прикрутить AVR Studio к CodeVisionAVR, написано здесь: http://www.pro-radio.ru/controllers/6585/KIP писал(а):...Бросать CVAVR очень не хочу.
А Ваша проблема, как отсчитать 1 секунду, обсуждалась здесь: http://radiokot.ru/forum/viewtopic.php? ... &start=580
Судя по описанию, файл с расширением _.c AVR Studio не нужен - буду пробовать.Барсик писал(а): Забейте на VMLAB и используйте в качестве отладчика AVR Studio. Как прикрутить AVR Studio к CodeVisionAVR, написано здесь: http://www.pro-radio.ru/controllers/6585/
Это спрашивал не я, такое я уже умею)Барсик писал(а):А Ваша проблема, как отсчитать 1 секунду, обсуждалась здесь: http://radiokot.ru/forum/viewtopic.php? ... &start=580
Непонятки с кодом:
Если menu_V_position становится меньше нуля, то условие не срабатывает... т.е. как будто -1 больше нуля...
если вместо signed char указать int - работает...
Как победить?
Код: Выделить всё
signed char menu_V_position;
menu_V_position-- ;
if (menu_V_position<0) menu_V_position=2;если вместо signed char указать int - работает...
Как победить?
попробуй так:
Код: Выделить всё
char menu_V_position;
menu_V_position-- ;
if (menu_V_position<0) menu_V_position=2;

На так CVAVR соответственно пишет ворнинг, т.к. "меньше 0" не входит в диапазон char и соответвенно тоже не работает... т.к. menu_V_position-- дает 255,254,253 и т.д. Т.е. так как и должно быть, т.к. чар по умолчанию без знака.Krik99 писал(а):попробуй так:Код: Выделить всё
char menu_V_position; menu_V_position-- ; if (menu_V_position<0) menu_V_position=2;
Вот какого болта оно не считает "меньше нуля" -1,-2,-3
Причем в моем варианте if (menu_V_position==-1) menu_V_position=2;
работает, но хочется общего варианта "<0" - а оно не работает...
Наверно нужно переубедить CVAVR в свойствах проекта что ЧАР и меньше нуля бывает.Telek писал(а):Вот какого болта оно не считает "меньше нуля" -1,-2,-3
...
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
А можно поподробней? где его еще убеждать?tych писал(а):Наверно нужно переубедить CVAVR в свойствах проекта что ЧАР и меньше нуля бывает.Telek писал(а):Вот какого болта оно не считает "меньше нуля" -1,-2,-3
...
Вроде явно написал signed char?
более того, если написать так:
Код: Выделить всё
signed char zero;
signed char menu_V_position;
zero=0;
menu_V_position-- ;
if (menu_V_position<zero) menu_V_position=2;


