BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение 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 не сохранился :(
Но и там у меня толком ничего не работало :kill:

Помогите, Асы!
Весь и-нет перерыл (даже англоязычный), но никакого примера не нашел :(
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

Re: BASCOM AVR в вопросах и ответах

Сообщение radio-kot »

Поделитесь примером usb hid для at90usb162 :beer:
Будете проходить мимо- проходите!
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

KOTик, написать такую программу, как два перста оросить. Но все же кажется, что ты хочешь научиться. Если так, попробуй САМ нарисовать блок-схему программы по исходному тексту. Тогда САМ поймешь, где ошибка. Могу подсказать - она в алгоритме. При рисовании блок-схемы сама вылезет. Бывает и у корифеев, что в мозгу "заклинит" и в простейшей ситуации путаются люди. Начнешь по исходнику рисовать блок-схему и все становится понятно.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение KOTик »

vem566 писал(а):... Тогда САМ поймешь, где ошибка. Могу подсказать - она в алгоритме.

Догадываюсь.
Надо отловить первое нажатие и привязать его к другому счетчику (счетчик времени).
Поступил второй клик в пределах эНННого значения счетчика времени - Опа! Включаем; Нет - обнуляем счетчик нажатий и счетчик времени.
Мне это как-то так видется..

Ща накидаю код...
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

И все таки попробуй, балды ради, нарисовать. Самому интересно станет.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение 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            'уходим


Не работает :kill:
При первом же нажатии, ЛЕД загорается.
Скажите, где что не так
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

Слушай, ты ходишь вокруг одних и тех же граблей. Регулярно наступая. Если я напишу программу, или нарисую блок-схему ведь не интересно станет.
KOTик писал(а):Ну, я как бы образно себе представил

А теперь из "образа" вычлени кусок, который ждет повторное нажатие кнопки.
Или время ожидания после первого нажатия в "образ" не попало?
Я ж тебе третий раз советую - нарисуй, и сам найдешь.
Или, в конце концов, давай я нарисую, а ты напишешь. Ведь все просто, как аборт.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение KOTик »

vem566 писал(а):Или, в конце концов, давай я нарисую, а ты напишешь. Ведь все просто, как аборт.

Ахаа.. Значит истина где-то рядом.
Плиз, скиньте схему. :beer:
Попытаюсь разобраЦа..
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

Ну разбирайся.
Вложения
Блок.png
(10.62 КБ) 526 скачиваний
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение pavel1979 »

vem566 писал(а):Ну разбирайся.

ну примерно так я и предложил,предыдущая стр последнее сообщение,только коментарии почему-то зашифровались на не известный мне язык :)
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

pavel1979 писал(а):только коментарии почему-то зашифровались на не известный мне язык
А это всегда почему то, если копировать из баскома в блокнот. Лениво разбираться. Скорее всего не совпадение шрифтов.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение 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 'возврат в основную программу
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

pavel1979, KOTик хочет САМ разобраться. Почему я и не писал текст. Ну пусть разберется. Зачем мешать? Это как смотреть детектив, и рядом сидит кадр и рассказывает, что будет дальше.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Re: BASCOM AVR в вопросах и ответах

Сообщение max50 »

vem566 писал(а):
pavel1979 писал(а):только коментарии почему-то зашифровались на не известный мне язык

А это всегда почему то, если копировать из баскома в блокнот. Лениво разбираться. Скорее всего не совпадение шрифтов.

При копировании должен быть русский язык, тогда все будет нормально.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение pavel1979 »

max50 писал(а):При копировании должен быть русский язык, тогда все будет нормально.

надо же,действительно,спасибо!
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение KOTик »

Мрррр... :)) Кошачье спасибо, pavel1979
Самое то.

vem566, а в какой программе можно такие блок-схемы создавать?
В следующих поделках "образы" буду точнее, т.е. яснее видеть :)

Кстати, у меня тоже шрифты слетают, когда код из басика сюда ставлю.
Язык интерфейса русский,
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

Есть специализированные программы. Но это большие. Предназначены для больших проектов. В них можно сразу, на основе блок-схемы генерировать скрипты, структуры и прочее. Конкретно эту схему рисовал в паинте. В екселе можно. Там есть подобные фигуры.
nemo1966
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вт мар 19, 2013 23:59:30

Re: BASCOM AVR в вопросах и ответах

Сообщение nemo1966 »

Смотрел смотрел так и не нашол ответа на вопрос "как в bascomavr симуляторе подключить кнопку если она обрабатывается в основном цикле" ткните носом как это сделать?
nemo1966
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вт мар 19, 2013 23:59:30

Re: BASCOM AVR в вопросах и ответах

Сообщение nemo1966 »

разобрался
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

Re: BASCOM AVR в вопросах и ответах

Сообщение 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

Может такое работать?
Ткните мордой, плз.
Ответить

Вернуться в «AVR»