roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 17:13

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 13:28 
Не в сети

Зарегистрирован: 13 ноя 2009, 11:54
Сообщения: 3
Откуда: Луганск
Написал на С программу в Codevision с ипользованием флагов размером в 1бит и вот такими IF:
if((in_work==0)&&(time_work_set==1)&&(time_pause_set==0)
программа нормально компилируется , но работать не хочет в отладчике видно, что она на ифы тупо забивает и идет
дальше.
Подскажите в чём дело как этим боротся?


Вложения:
dizel.rar [3.29 КиБ]
Скачиваний: 9
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 13:46 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
мне вот интересно где флаги эти хранятся после компиляции )

а по теме - хз ) я давно на сях не пишу.. но явных косяков не вижу..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 13:49 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
inc дай внятное название теме, иначе получишь предупреждение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 13:59 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
По моему, такие записи не корректны, нельзя в дефайнах писать через ";" команды
Код:
#define sound_on TCCR0=0x3D;TCNT0=0x00;OCR0=0xFA
#define  sound_down TCCR0=0x00; TCNT0=0x00;OCR0=0x00
#define time_start TCCR1A=0x00; TCCR1B=0x05;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x3A;OCR1AL=0x98;OCR1BH=0x00;OCR1BL=0x00
#define time_stop TCCR1A=0x00;TCCR1B=0x08;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x3A;OCR1AL=0x98;OCR1BH=0x00;OCR1BL=0x00


Добавлено спустя 5 минут 22 секунды:
Попробуй закоментировать строчку, кажется в ней прога будет зависать.

Код:
while(start_butt==0){}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 14:11 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
А у меня ругается вот как:


Вложения:
Error.png
Error.png [ 3.04 КиБ | Просмотров: 1587 ]

_________________
I live My life!
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 14:16 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
А как ты его компилишь, он же выложил тока сишный файл, а остальных нету?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 15:02 
Не в сети

Зарегистрирован: 13 ноя 2009, 11:54
Сообщения: 3
Откуда: Луганск
сейчас выкладываю весь проект. Спасибо, но почему он в ифы не заходит? (while(start_butt==0){}-работает как и должно)
p.s.извиняюсь за дублирование темы- запарился.


Вложения:
Комментарий к файлу: проект
code_vis.rar [59.85 КиБ]
Скачиваний: 7
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 15:40 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Цитата:
while(start_butt==0){}-работает как и должно

А не получается что когда start_butt=0 вы в этой процедуре весите и до ифов дело не доходи или он их игнорирует даже если кнопка не нажата?
И в чем вы симулируете?

Добавлено спустя 3 минуты 34 секунды:
Для начала нужно удалить запятые везде после фигурных скобок
};
После них точка с запятой после них никогда не ставится, и очень странно что ваш CV не выдал ошибки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 15:58 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
кодевиженом не пользуюсь, поэтому только по стандартному Си.

1. Как минимум точки с запятой наставить после дефайнов, где несколько команд.
А вообще принято так
#define sound_on() {blabla=77; count++; PORT|=0x55;}

2. Точки с запятой после фигурных скобок лишние не бывают.
(вообще по стандарту точки с запятой можно лишние втыкать между операторами - это не ошибка,
поэтому компилер и не ругается, и не должен).

3. Посмотреть как определен бит в хедерах у кодевижена.
Вполне вероятно, что через чар, тогда сравнивать его с единицей
(а может и нулем - от реализации зависит) некорректно.

Правильнее, имхо, писать так: if((bit1)&(!bit2)).
Но лучше понять как в кодевижене реализован тип бит.


Последний раз редактировалось Michael_K 13 ноя 2009, 16:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 16:06 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Цитата:
2. Точки с запятой после фигурных скобок лишние не бывают.
(вообще по стандарту точки с запятой можно лишние втыкать между операторами - это не ошибка,
поэтому компилер и не ругается, и не должен).

У меня ругается, значит это заморочки CV.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 16:55 
Не в сети

Зарегистрирован: 13 ноя 2009, 11:54
Сообщения: 3
Откуда: Луганск
спасибо, буду дальше разбиратся

Добавлено спустя 10 минут 58 секунд:
да, точно bit определяется через char,и как можно поступить в данном случае?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 17:05 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
юзайте не bit, а char, памяти вроде хватит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобратся
СообщениеДобавлено: 13 ноя 2009, 17:45 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
Набросал тестовую программку под Atmega 8 с двумя флагами и одним ифом. Все откомпилировалось и в VMLab нормально работает (в ифы заходит).

Добавлено спустя 1 минуту 23 секунды:
Master писал(а):
юзайте не bit, а char, памяти вроде хватит.

Действительно. Можно все флаги в один или несколько чаров собрать и устанавливать-читать только нужные биты байта.

_________________
I live My life!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO