реклама на сайте
подробности

 
 
> вопрос по Си небольшой.
Метценгерштейн
сообщение Sep 6 2006, 06:13
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



У меня организован такой цикл case:

switch(State) {
...
case IDLE: // этот код выполняется если снято с охраны
off(LED);

if( one_wire_main () ) { //если что-то приложили (ключ)

if(USER_KEYS()) {
State = IDLE_HAS_KEY;
}
}

break;

case IDLE_HAS_KEY:
...

Вопрос- вот иду я по проге, приложили USER_KEYS, я сразу прыгаю на метку IDLE_HAS_KEY? Или дохожу до оператора break, потом компилятор анализирует что там было раньше и после break прыгает уже на метку?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dezzer
сообщение Sep 14 2006, 11:44
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 27-09-05
Пользователь №: 9 012



Цитата
Не понятно по скобкам, этот таймер у меня внутри ф-ии, я туда всегда буду попадать по прерыванию счетчика?

Таймера внутри функции лично я не вижу. По прерыванию от него вы будете попадать в соответствующую ISR (программу обслуживания прерываний). А вот, что вы будуте в этой ISR делать (просто отключать сирену, флаг какой-то устанавливать, что пора бы её выключить) - это уже ваше дело.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Sep 14 2006, 12:02
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



всё правильно, я немного не так выразился, по прерыванию от таймера я попадаю сюда

#pragma vector = TIMER0_OVF0_vect
__interrupt void overflow_timer1(void)
{
CntT0++;
}

Здесь увеличиваю переменную
А что у меня получилось? Сначала сработал датчик, я попал в эту ф-ю, включил сирену, обнулил
CntT0=0;
теперь надо, чтобы при проверке при количеству подсчетов =700, выполнялось отключить сирену. Уже вижу, что запутался. Я хотел вот что спросить, здесь
if(signal(SENS)) {
я буду считать до 700 если это условие постоянно истина? Т.е. все время идет сигнал от датчика? как только нет, я вываливаюсь из цикла и уже не проверяю на 700?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   вопрос по Си небольшой.   Sep 6 2006, 06:13
- - KRS   Что значит цикл case??? на case IDLE_HAS_KEY: вы ...   Sep 6 2006, 06:24
|- - Harvester   Цитата(KRS @ Sep 6 2006, 10:24) Что значи...   Sep 6 2006, 06:55
|- - Метценгерштейн   ясно, с этим вроде разобрался, вот ещё не ясно как...   Sep 6 2006, 08:29
|- - Метценгерштейн   так корректно будет? CntT0= 0; if( !o...   Sep 6 2006, 09:22
|- - Harvester   Цитата(Метценгерштейн @ Sep 6 2006, 12:29...   Sep 6 2006, 11:41
|- - Метценгерштейн   немного конкретизирую задачу- при приложении масте...   Sep 8 2006, 07:35
|- - Harvester   Цитата(Метценгерштейн @ Sep 8 2006, 11:35...   Sep 8 2006, 12:41
|- - Метценгерштейн   while ( MasterKey () ) { //пока ещё приложен ключ ...   Sep 11 2006, 10:23
|- - PaulS   Цитата(Метценгерштейн @ Sep 11 2006, 14:2...   Sep 11 2006, 10:54
- - Shurmas   Пример с сетью 1-wire с "таблеткой" и др...   Sep 11 2006, 13:41
|- - Метценгерштейн   ещё вопрос по Си (простой) в таком виде case ARME...   Sep 14 2006, 11:17
|- - _Bill   Цитата(Метценгерштейн @ Sep 14 2006, 15:0...   Sep 14 2006, 12:21
- - xemul   2 Метценгерштейн имхо, было бы неплохо нарисовать ...   Sep 14 2006, 15:39


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016