BASCOM AVR в вопросах и ответах
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Да я давненько роюсь в примере. Переделал как хотел. Но когда выполняется подпрограмма нельзя отслеживать кнопку. Это не очень хорошо, но что нибудь попробую придумать. Может в подпрограмму дописать команду чтоб отслеживать светодиодом нажата она или нет? Эх... Опыту мало 
- Реклама
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Повесьте кнопку на внешнее прерывание. Делов-то. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Но тогда индикация будет сбрасываться
Ведь я применил в программе ваш пример 
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Это почему же? Прерывание таймера - это одно. А прерывание кнопки - совершенно другое. И вместе они запросто уживутся. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Сейчас попробую 
Пока не вьехал в стройку как это сделать
Почитаю еще литературы немного
Пока не вьехал в стройку как это сделать
Почитаю еще литературы немного
- Реклама
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Мозги уже кипят
По нажатию кнопки происходит переход сразу в подпрограмму. Это понятно из вашего примера.
Далее работает подпрограмма. Весь основной цикл опрашивается кнопка и все. Что то дописывать (даже простейшее ) туда бесполезно , программа отрабатывает сразу переход в подпрограмму. Что то я совсем отупел уже
Не могу уже придумать ничего 
По нажатию кнопки происходит переход сразу в подпрограмму. Это понятно из вашего примера.
Далее работает подпрограмма. Весь основной цикл опрашивается кнопка и все. Что то дописывать (даже простейшее ) туда бесполезно , программа отрабатывает сразу переход в подпрограмму. Что то я совсем отупел уже
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Нормальное явление, не переживайте.
Давайте начнем с того, что именно вас не устраивает в имеющемся варианте?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Устраивает всё
Но проблема в том что помимо переключения светодиодов и отключения через 3 сек надо еще индицировать нажатие кнопки в реальном времени отдельным светодиодом. Но в основном цикле у меня это сделать как я понимаю уже не получится. В остальном все получается очень даже хорошо 
Да и как тут не переживать? Столько усилий прикладываешь чтоб создать элементарное, даже стыдно

Да и как тут не переживать? Столько усилий прикладываешь чтоб создать элементарное, даже стыдно
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Доброго времени суток !
Тоже решил впрячься в решение задачи.
осторожно! леоныч!!!, а что конкретно сейчас не устраивает ? edm2007 предложил рабочее решение, только что попробовал.
edm2007, виртуозно написано !
Я пока так не умею...
Можно прокомментировать поподробнее ?
Я не понял, как тут отсчитывается 3 секунды ?
Тоже решил впрячься в решение задачи.
осторожно! леоныч!!!, а что конкретно сейчас не устраивает ? edm2007 предложил рабочее решение, только что попробовал.
edm2007, виртуозно написано !
Можно прокомментировать поподробнее ?
Код: Выделить всё
Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1 ' отсчет 3-х секунд
Ocr1a = &HB71B
On Oc1a 3sec
Enable Interrupts ' разрешаем прерывание
Enable Oc1aС уважением,
Алексей.
Алексей.
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Таймер 1 тактируется сигналом с частотой F0/256=15625 Гц. Чтобы получить задержку 3 с, нам необходимо пропустить 3*15625=46875 периодов этого сигнала. Что в шестнадцатеричном выражении равно &hB71B. Это значение и записывается в регистр сравнения таймера, по достижению которого сработает прерывание.Gordon Shumway писал(а):Я не понял, как тут отсчитывается 3 секунды ?Код: Выделить всё
Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1 ' отсчет 3-х секунд Ocr1a = &HB71B On Oc1a 3sec
Даже остановленные часы два раза в сутки показывают правильное время.
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
осторожно! леоныч!!!, а что конкретно сейчас не устраивает ? edm2007 предложил рабочее решение, только что попробовал.
edm2007, виртуозно написано !
Я пока так не умею...
Можно прокомментировать поподробнее ?
Да все меня устраивает. Код замечательный, не спорю. Я этот пример использовал в своей программе для мк. Дополнил еще очень много чем. Как я уже писал, я не программист, это моя вторая работа.
Просто я не мог вчера придумать как в ходе работы предложенного кода отслеживать нажатие кнопки и индицировать его отдельным светодиодом в реальном времени. В остальном все отлично.
edm2007, виртуозно написано !
Можно прокомментировать поподробнее ?
Да все меня устраивает. Код замечательный, не спорю. Я этот пример использовал в своей программе для мк. Дополнил еще очень много чем. Как я уже писал, я не программист, это моя вторая работа.
Просто я не мог вчера придумать как в ходе работы предложенного кода отслеживать нажатие кнопки и индицировать его отдельным светодиодом в реальном времени. В остальном все отлично.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Я же выше расписывал подробно.Gordon Shumway писал(а):Я не понял, как тут отсчитывается 3 секунды ?
Секретный кот, спасибо.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Вот зараза. Не получается. Хоть еще один порт задействуй. Глупо как то......
Нашел довольно не плохой список команд с описанием http://www.cqham.ru/bascom.htm
Может как и мне кому нибудь пригодиться.
Нашел довольно не плохой список команд с описанием http://www.cqham.ru/bascom.htm
Может как и мне кому нибудь пригодиться.
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Вы про индикацию нажатий кнопок ? В каком виде она вам нужна - отдельным светодиодом, или как-то существующие светодиоды должны отреагировать помимо их основной работы ?осторожно! леоныч!!! писал(а):Вот зараза. Не получается. Хоть еще один порт задействуй. Глупо как то......
С уважением,
Алексей.
Алексей.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Вы нормально скажите, что нужно-то? Сформулируйте задание. А тоосторожно! леоныч!!! писал(а):Вот зараза. Не получается.
А чем именно - непонято. О нажатии кнопки должен сигнализировать светодиод? И как? Пока нажата кнопка, или что?осторожно! леоныч!!! писал(а):Дополнил еще очень много чем.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Поясню проще) Считаем что ваш пример без изменений, надо просто индицировать нажатие кнопки. Кнопка нажата - отдельный светодиод горит, отпущена - не горит. При это функция счета 3 светодиодов должна оставаться. Я пробовал перенести подпрограмму в основной цикл, думал так получится. Но так и не разобрался
Компилятор обматерил меня как мог

- amv2000
- Опытный кот
- Сообщения: 724
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
А если включить в обработку прерывания такой кодосторожно! леоныч!!! писал(а): Считаем что ваш пример без изменений, надо просто индицировать нажатие кнопки. Кнопка нажата - отдельный светодиод горит, отпущена - не горит.
Код: Выделить всё
3leds: ' подпрограмма обработки нажатия кнопки
if Button = 0 then
Set Led_4 ' здесь ваш отдельный светодиод, не забыть в начале присвоить его к порту например: Led_4 Alias Portb.4
Else
Reset Led_4
Timer1 = 0 ' обнуляем таймер отсчета 3-х секунд
Incr Count
If Count > 3 Then Count = 3
If Count = 1 Then
Set Red_led
Elseif Count = 2 Then
Set Yellow_led
Elseif Count = 3 Then
Set Green_led
End If-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Очень интересно amv2000
Сам бы точно не допёр
Да еще второй день зуб болит,башка вообще почти не варит. Сейчас попробую 
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
label not found (endif0) Вот так снова меня обматерил компилятор 
Даже после успешной компиляции с одной строкой If Button = 0 Then Set Leda (просто зажечь светодиод) "leda" - так он прописан, он не загорается...
Только сейчас вспомнил что вроде вчера так пробовал только без присвоения имен, просто порт прописывал.
Даже после успешной компиляции с одной строкой If Button = 0 Then Set Leda (просто зажечь светодиод) "leda" - так он прописан, он не загорается...
Только сейчас вспомнил что вроде вчера так пробовал только без присвоения имен, просто порт прописывал.
- amv2000
- Опытный кот
- Сообщения: 724
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Ну да еще один End If внизу допишитеосторожно! леоныч!!! писал(а):label not found (endif0) Вот так снова меня обматерил компилятор
Код: Выделить всё
Elseif Count = 3 Then
Set Green_led
End If
End ifКод: Выделить всё
if Button = 0 then
Set Led_4 ' здесь ваш отдельный светодиод, не забыть в начале присвоить его к порту например: Led_4 Alias Portb.4
Else
Reset Led_4
End ifКод: Выделить всё
if Button = 0 then : Set Led_4 = Button : End if
Последний раз редактировалось amv2000 Вт окт 09, 2012 11:22:48, всего редактировалось 2 раза.


