Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Возможно ли такое в MPASM?

Непрочитано 29.11.2015, 19:24  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Возможно ли такое в MPASM?

После выполнения действия по нажатой кнопке, установить бит в регистре, отведенном под эти нужды. Бит - общий для всех кнопок, либо отдельно на каждую кнопку. Сбрасывать этот бит при отпускании кнопки. А действие по нажатой кнопке выполнять только в том случае, если этот бит не установлен (проверка бита btfss или btfsc перед выполнением действия).

По схеме - первым делом - нельзя так напрямую соединять кнопки. Иначе при одновременном нажатии двух кнопок получится кз между линиями Q7 - Q6 - Q5. Кнопки соединять между собой в одну точку только через резисторы в несколько килоом. Либо через диоды, включенные так, чтобы не было протекания тока между Q7 - Q6 - Q5 при одновременном нажатии кнопок.
Реклама:
NewWriter вне форума  
Непрочитано 29.11.2015, 21:59  
Nick19
Временная регистрация
 
Аватар для Nick19
 
Регистрация: 26.10.2008
Адрес: москва
Сообщений: 92
Сказал спасибо: 15
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
Nick19 на пути к лучшему
По умолчанию Re: Возможно ли такое в MPASM?

Сообщение от NewWriter Посмотреть сообщение
По схеме - первым делом - нельзя так напрямую соединять кнопки.
Схема понятное дело для Протеуса, у меня и транзисторы в катоды не получилось разиестить, хотя и определил как дискретные. А насчет отжатия нужно ли зацикловывать, пока не будет отжатия и потом, если кнопка не нажата RA3 = 1, то как отслеживать отжатие, кроме того как зацикливание после входа по нажатию. Но циклы то разные, не может быть одновременно 2-х нулей на шине считивания RA3.

Последний раз редактировалось Nick19; 29.11.2015 в 23:53.
Nick19 вне форума  
Непрочитано 16.12.2015, 03:35  
rusyvochka
Гражданин KAZUS.RUN
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: Возможно ли такое в MPASM?

Поступаю так:
Резервирую регистр, скажем, "key"
Перед! Сменой индикации, опашиваю общий вход - как правильно замечено выше, в жеезе надо делать паузу, иначе емкостя дают ложную информацию, перед сменой разряда, все давно устаканилось и, если нажато, выставляю соотв бит. Обработка в основном теле. Там же и проверка одновременного нажатия и времени удержания. К ста: есть игрушка со смешаным управлением, энкодер + кнопки. После тирзаний, финалка получилась такой:
В прерывании по изменению уровняна одном из каналов, определяю направление, выставляю в том же key соотв флаг ( прибавит / убавит), сбрасываю флаг и запрещаю эти прерывания. Обработка и разрешение прерываний, опять же, в основном теле. Чего дало? В железе достоверность не зависит от скорости вращения да и индикатор не подмигивает, как если в обработке энкодера "тяжелая" математика.
Транзисторы в Proteus заменяю на "примитивный" инвертор - эммулятору легче.
Касаемо стартового вопроса - проще табличного retlw врядли есть.
Можно еще rrf или rlf спроверкой C в цикле на 8 соорудить, если несколько бит одновременно проверять (не совсем в тему) - на вкус и цвет...
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 18.12.2015, 19:14  
Nick19
Временная регистрация
 
Аватар для Nick19
 
Регистрация: 26.10.2008
Адрес: москва
Сообщений: 92
Сказал спасибо: 15
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
Nick19 на пути к лучшему
По умолчанию Re: Возможно ли такое в MPASM?

Закончил свой проект. Все работает. Правда от использования "PCLATH - PCL" пришлось отказаться, благо переходов всего 3. Были проблемы с переводом программы на дисплей с общим анодом, но в конце концов все разрешилось добавлением гашения при смене знакомест. Хотя программа с общим катодом работала без гашения. Проект прилагаю, может кому пригодится. Всех с наступающим!
Вложения:
Тип файла: zip ZU6.zip (104.9 Кб, 29 просмотров)
Nick19 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое идентификатор для пакета CAN? greafuger Микроконтроллеры, АЦП, память и т.д 5 01.04.2008 08:53
Что такое JDM? pfgx Микроконтроллеры, АЦП, память и т.д 29 22.11.2007 22:37
[Решено] !!! Знающие люди, HELP !!! Что такое "триггер шмитта&qu AlL Электроника - это просто 2 03.11.2004 14:43


Часовой пояс GMT +4, время: 16:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.