Страница 185 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 08:44:53
KOTик
Код: Выделить всё
Dim Wtime As Byte
Do
Debounce Pinb.4 , 0 , Knopka , Sub
Loop
Knopka:
Waitms 50
Incr Wtime 'увеличиваем счетчик с каждым нажатием
Waitms 50
If Wtime = 2 And Pinb.4 = 0 Then 'если счетчик = 2 и нажата кнопка
Goto Sub2 'идем туда
Wtime = 0 'обнуляем счетчик
Goto Ext2
End If
'если было одно нажатие, ЖДЕМ ВТОРОГО НАЖАТИЯ в теч. 2 секунд, если нажатие не произошло, обнуляем счетчик Wtime
Waitms 50
PORTB.0 = 0 'ничего не включаем
Waitms 50
Ext2:
Return
'включаем
Sub2:
Waitms 50
PORTB.0 = 1 'включили ЛЕД
Wait 2 'подождали 2 сек.
PORTB.0 = 0 'и выключили
Waitms 50
Wtime = 0 'обнулили счетчик
Return 'вышли отсюда
Данный код работает, но не так, как нужно.
LED загорается только на второе нажатие. А мне надо отсчитать время от первого нажатия до второго.
Т.е. нажали кнопку - светодиод не горит и тикает время. Если в теч. 2 секунд еще раз нажали, то светодиод загорается на 2 секунды и тухнет (это работает).
Если не было второго нажатия в теч. 2 сек., счетчик Wtime обнуляется и далее покругу.
К сожалению вариант с циклом For... Next не сохранился

Но и там у меня толком ничего не работало
Помогите, Асы!
Весь и-нет перерыл (даже англоязычный), но никакого примера не нашел

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 10:19:29
radio-kot
Поделитесь примером usb hid для at90usb162

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 11:40:53
vem566
KOTик, написать такую программу, как два перста оросить. Но все же кажется, что ты хочешь научиться. Если так, попробуй САМ нарисовать блок-схему программы по исходному тексту. Тогда САМ поймешь, где ошибка. Могу подсказать - она в алгоритме. При рисовании блок-схемы сама вылезет. Бывает и у корифеев, что в мозгу "заклинит" и в простейшей ситуации путаются люди. Начнешь по исходнику рисовать блок-схему и все становится понятно.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 13:26:11
KOTик
vem566 писал(а):
... Тогда САМ поймешь, где ошибка. Могу подсказать - она в алгоритме.
Догадываюсь.
Надо отловить первое нажатие и привязать его к другому счетчику (счетчик времени).
Поступил второй клик в пределах эНННого значения счетчика времени - Опа! Включаем; Нет - обнуляем счетчик нажатий и счетчик времени.
Мне это как-то так видется..
Ща накидаю код...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 14:28:44
vem566
И все таки попробуй, балды ради, нарисовать. Самому интересно станет.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 14:58:03
KOTик
vem566 писал(а):И все таки попробуй, балды ради, нарисовать. Самому интересно станет.
Ну, я как бы образно себе представил, и вот что получилось:
Код: Выделить всё
Knopka:
Waitms 50
Incr Click 'увеличиваем счетчик нажатий
Waitms 50
If Click = 1 Then 'если нажали один раз
Count = Count + 1 'увеличиваем счетчик задержки
End If
Waitms 50
If Click = 1 And Count > 25Then 'если нажали один раз и счетчик натикал БОЛЬШЕ 25
Portb.0 = 0 'выключаем ЛЕД
Waitms 50
Click = 0 'обнуляем счетчик нажатий
Count = 0 'обнуляем счетчик задержки
End If
If Click = 1 And Count < 25Then 'если нажали один раз и счетчик натикал МЕНЬШЕ 25
Goto Led_on 'переходим по метке
End If
Waitms 50
Return
'ВКЛЮЧАЕМ
Led_on:
Waitms 50
Portb.0 = 1 'включаем
Wait 2 'ждем 2 сек.
Portb.0 = 0 'выключаем
Waitms 50
Click = 0 'обнуляем счетчик нажатий
Count = 0 'обнуляем счетчик задержки
Return 'уходим
Не работает
При первом же нажатии, ЛЕД загорается.
Скажите, где что не так
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 16:34:05
vem566
Слушай, ты ходишь вокруг одних и тех же граблей. Регулярно наступая. Если я напишу программу, или нарисую блок-схему ведь не интересно станет.
KOTик писал(а):Ну, я как бы образно себе представил
А теперь из "образа" вычлени кусок, который ждет повторное нажатие кнопки.
Или время ожидания после первого нажатия в "образ" не попало?
Я ж тебе третий раз советую - нарисуй, и сам найдешь.
Или, в конце концов, давай я нарисую, а ты напишешь. Ведь все просто, как аборт.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 16:38:56
KOTик
vem566 писал(а):Или, в конце концов, давай я нарисую, а ты напишешь. Ведь все просто, как аборт.
Ахаа.. Значит истина где-то рядом.
Плиз, скиньте схему.
Попытаюсь разобраЦа..
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 17:05:49
vem566
Ну разбирайся.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 17:12:06
pavel1979
vem566 писал(а):Ну разбирайся.
ну примерно так я и предложил,предыдущая стр последнее сообщение,только коментарии почему-то зашифровались на не известный мне язык

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 17:17:17
vem566
pavel1979 писал(а):только коментарии почему-то зашифровались на не известный мне язык
А это всегда почему то, если копировать из баскома в блокнот. Лениво разбираться. Скорее всего не совпадение шрифтов.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 17:22:01
pavel1979
Config Debounce = 50 'дребезг
'------------------------------------------------------
Dim Count As Byte ' переменная времени
Reset Porta.0 ' порт,к которому подключен светодиод
' (íà÷àëüíîå ñîñòîÿíèå)
'------------------------------------------------------
Do 'начало программы
Debounce Pind.2 , 0 , Button , Sub 'если нажали кнопку идем на BUTTON
Loop
'------------------------------------------------------
Button: ' сама программа обработки кнопки
Label1: 'ждем когда кнопка отпустится
Waitms 10
If Pind.2 = 0 Then Goto Label1
For Count = 0 To 255 'возрастание count через
Waitms 10 '10 мсек=2,55 мин
If Pind.2 = 0 Then 'если в это время нажать кнопку
Set Porta.0 'вкл светодиод
Goto Ext ' и выйти из цикла
End If
Next Count
Reset Porta.0 'если не нажали второй раз светодиод погашен
Ext: 'метка
Return 'возврат в основную программу
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 17:48:35
vem566
pavel1979, KOTик хочет САМ разобраться. Почему я и не писал текст. Ну пусть разберется. Зачем мешать? Это как смотреть детектив, и рядом сидит кадр и рассказывает, что будет дальше.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 20:21:52
max50
vem566 писал(а):pavel1979 писал(а):только коментарии почему-то зашифровались на не известный мне язык
А это всегда почему то, если копировать из баскома в блокнот. Лениво разбираться. Скорее всего не совпадение шрифтов.
При копировании должен быть русский язык, тогда все будет нормально.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 07, 2013 20:33:54
pavel1979
max50 писал(а):
При копировании должен быть русский язык, тогда все будет нормально.
надо же,действительно,спасибо!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 08, 2013 16:04:37
KOTик
Мрррр...

Кошачье спасибо,
pavel1979
Самое то.
vem566, а в какой программе можно такие блок-схемы создавать?
В следующих поделках "образы" буду точнее, т.е. яснее видеть
Кстати, у меня тоже шрифты слетают, когда код из басика сюда ставлю.
Язык интерфейса русский,
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 08, 2013 17:37:07
vem566
Есть специализированные программы. Но это большие. Предназначены для больших проектов. В них можно сразу, на основе блок-схемы генерировать скрипты, структуры и прочее. Конкретно эту схему рисовал в паинте. В екселе можно. Там есть подобные фигуры.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 14, 2013 15:23:08
nemo1966
Смотрел смотрел так и не нашол ответа на вопрос "как в bascomavr симуляторе подключить кнопку если она обрабатывается в основном цикле" ткните носом как это сделать?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 15, 2013 08:26:10
nemo1966
разобрался
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср окт 16, 2013 16:39:55
servnt
Ребят, полному нубу подскажите:
простенькая схема пропорционального управления:

программка:
Код: Выделить всё
$regfile = "attiny13.dat"
$crystal = 9600000
Config Portb.0 = Output
Config Portb.1 = Output
Config Pinb.5 = Input
Config Pinb.4 = Input
Config Pinb.3 = Input
Config Adc = Free , Prescaler = Auto , Reference = Avcc
Dim A As Word
Dim B As Word
Start Adc
Do
A = Getadc(2)
B = Getadc(3)
If A < B Then
Pinb.0 = 0
Pinb.1 = 1
Else
End If
If A > B Then
Pinb.0 = 1
Pinb.1 = 0
Else
End If
If A = B Then
Pinb.0 = 0
Pinb.1 = 0
End If
Loop
End
Может такое работать?
Ткните мордой, плз.