При выполнении первого условия идёт проверка второго. Если второе условие выполняется, то Return. Если первое условие не выполняется, то end if. Если второе условие не выполняется, то end if.ksv68 писал(а):функция где?
BASCOM AVR в вопросах и ответах
- Реклама
С уважением,
Алексей.
Алексей.
Вам же сказали что можно. Второй If уберите.
Код: Выделить всё
If Keynim = 0 And Key = 0 Then
...
End If
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ну, теоретичски:ksv68 писал(а):а в одну строку можно написать?
Код: Выделить всё
If Keynim = 0 and Key = 0 then ReturnС уважением,
Алексей.
Алексей.
- Реклама
Так тоже можно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
В вашем варианте можно несколько действий добавить при выполнении условий.edm2007 писал(а):Так тоже можно.
Например мигнуть светодиодом перед ретурном.
С уважением,
Алексей.
Алексей.
Угу. Все предложенные варианты имеют право на жизнь. Все зависит от задачи.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Здравствуйте. Подскажите пожалуйста, или ткните носом в литературу.
В программе задействованы два прерывания. Первое по выходу таймера реального времени, по которому он и опрашивается ежесекундно. А второе для рс232.
Если произойдет прерывание во время приема данных, контроллер пропустит или отложит опрос часов?
Какая вероятность что МК что то пропустит с рс232, если прерывания часов на несколько тактов только для установки флага наступит во время приема данных?
В программе задействованы два прерывания. Первое по выходу таймера реального времени, по которому он и опрашивается ежесекундно. А второе для рс232.
Если произойдет прерывание во время приема данных, контроллер пропустит или отложит опрос часов?
Какая вероятность что МК что то пропустит с рс232, если прерывания часов на несколько тактов только для установки флага наступит во время приема данных?
Здравствуйте.
При переходе в обработчик любого прерывания все прерывания запрещаются глобально, до выхода из обработчика. Это вынужденная и логичная мера, чтобы как раз и не возникало таких ситуаций, когда прерывание рвет само себя. Но остальные прерывания пропущены не будут. Есть флаги прерываний, которые выставятся при необходимости, и будут обработаны в порядке очереди векторов после выполнения текущего обработчика.
P.S. Флаги прерываний не считают количество вызовов, а лишь фиксируют факт срабатывания. Проще говоря, если на INT0 сидит кнопка, то флаг зафиксирует ее нажатие первый раз, и после выполнения текущего прерывания уйдет обрабатывать INT0 так же один раз. Один раз, даже если кнопка была натыкана 100500 раз.
При переходе в обработчик любого прерывания все прерывания запрещаются глобально, до выхода из обработчика. Это вынужденная и логичная мера, чтобы как раз и не возникало таких ситуаций, когда прерывание рвет само себя. Но остальные прерывания пропущены не будут. Есть флаги прерываний, которые выставятся при необходимости, и будут обработаны в порядке очереди векторов после выполнения текущего обработчика.
P.S. Флаги прерываний не считают количество вызовов, а лишь фиксируют факт срабатывания. Проще говоря, если на INT0 сидит кнопка, то флаг зафиксирует ее нажатие первый раз, и после выполнения текущего прерывания уйдет обрабатывать INT0 так же один раз. Один раз, даже если кнопка была натыкана 100500 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Спасибо. Часы надо, но на них как то пофигу. главное с рс232 ничего не пропустить.
Последний раз редактировалось vanyap1 Сб янв 10, 2015 14:52:09, всего редактировалось 1 раз.
Не переживайте, пока Вы в обработчике, только одно прерывание может Вам помешать. Это RESET. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Кстати. При программировании загрузчика забыл включить сторожевой таймер.
Его возможно включить в программе? Программатор уже отпаял.
Упс вопрос глупый. Будет сбрасывать еще на этапе загрузчика. В нем нет функции сброса таймера.
Его возможно включить в программе? Программатор уже отпаял.
Упс вопрос глупый. Будет сбрасывать еще на этапе загрузчика. В нем нет функции сброса таймера.
Да. Его лучше там и включать, потому как про фьюз можно запросто забыть, и получить массу проблем с отладкой.
P.S. C загрузчиком да, но в остальном пусть совет останется. Удалять не буду.
P.S. C загрузчиком да, но в остальном пусть совет останется. Удалять не буду.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Написал часть проекта, гляньте опытным взглядом, может какие грубые ошибки допустил. В протеусе работает, в железо пока не стал заливать, это скорее даже заготовка , первый блин как говорится. Перешёл с другого языка, по тому ли пути иду, сильно не ругайте. https://yadi.sk/d/xH_QjhEhdtAuo За ранее благодарен.
Грубого ничего не увидел, вполне неплохо. Сложно конечно судить о коде, не зная совершенно логики работы. Лишь одно для меня совершенно неприемлемо - ни единого комментария в коде.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Большое спасибо, с комментариями конечно поленился и сам начинаю путать , чего зачем . Залил в железо и как всегда первая неудача, работает только индикатор, кнопки молчат, хотя в протеусе все ОК. Вывел на дисплей переменную Key, что читается с порта с кнопками и 255 или бегают цифры, наверное наводка, хотя прога предыдущая (в флов коде написанная) работала, хотя я там читал только 4 бита. Странно, протеус показывает на экране одно (код 30) те 4 бита и есть , а в железе другое (код 255) ???edm2007 писал(а): Ни единого комментария в коде.
Проверьте в железе, при отжатых кнопках на пинах МК кнопок есть +5В?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
5 вольт есть на всех кнопках, при нажатии на кнопку код (вывел на экран) меняется, при отжатых немного бегают цифры. Думаю надо задать ,чтоб читались 4 бита порта.
Как достучаться до фуз битов в - at90s8515
В баскоме недоступно. Во вкладке просто ничего нет.
Надо включить таймер сторожевой.
Контроллеров несколько досталось с таксофонов, выкинуть жалко. А покупать другие дорого сейчас.
В баскоме недоступно. Во вкладке просто ничего нет.
Надо включить таймер сторожевой.
Контроллеров несколько досталось с таксофонов, выкинуть жалко. А покупать другие дорого сейчас.


