Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 30.11.2006, 12:16  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

Сообщение от svorog1
Извините можно поподробнее как вес бита вычислять
Вес бита - двойка в степени номера бита:
pb0 -› 2^0 = 1
pb1 -› 2^1 = 2
pb7 -› 2^7 = 0x80 = 128

мне нужно чтобы кнопики были на P1(2)
P2(4) и P4(16 или 0x10)

Код:
Вот что я пытался пустить 
#define bt_mode         0x01 - PB0   
#define bt_cnt          0x02 - PB1   
#define ld_mode         0x04 - PB2 !!!! СВЕТОДИОД 

n = PINB & (bt_mode|bt_cnt); - ЧИТАЕМ КНОПКИ
 v = p ^ n; - ИЗМЕНЕННЫЕ
 v = v & p; - ИЗМЕНИЛИ И БЫЛИ НАЖАТЫ -› ОТПУЩЕНЫ
 p = n;
 v = v & 0x0F; - ЭТО ЗАЧЕМ?!!!!!! Я в том примере так делал, дабы не затрагивать подтягивающие резисторы старшей тетрады, ибо на ней сидели кнопки... здесь зачем?!
 if (v & n & bt_cnt) - ЗДЕСЬ V - это уже НЕ ИЗМЕНЕННЫЕ!!! получается "ОТПУЩЕННЫЕ и СЕЙЧАС НАЖАТЫ" немогу сообразить, но вроде бы как тут всегда фальш будет
 {
   PORTB ^= BIT(3); - 2^3 = 8 !!! А СВЕТОДИОД НА PB2!!! Если Вы сделали Define c ВЕСАМИ? то используйте их: PORTB ^= ld_mode ... или define определите номера бит и везде используйте BIT(x)
 
 }

тока бли неработат

--------
#define bt_mode 0x01
#define bt_cnt 0x02
#define ld_mode 0x04

n = PINB & (bt_mode|bt_cnt);
v = p ^ n;
if (v & p & bt_cnt)//"v & p" все нажатые кнопки, а добавив "& bt_cnt" - "среди нажатых есть и bt_cnt"
{
PORTB ^= ld_mode;
} 
p = n;
Попробуйте так - при отпускании должно переключать ... если не намудрил нигде если заменить if (v & p & bt_cnt) P на N, то будет при нажатии переключать.
Реклама:
AndryG вне форума  
Непрочитано 30.11.2006, 12:34  
svorog1
Прохожий
 
Регистрация: 29.11.2006
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
svorog1 на пути к лучшему
По умолчанию

Спасибо за ответ
наконецто разобрался
спасибо
svorog1 вне форума  
Непрочитано 30.11.2006, 12:46  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

Разобрался хорошо ... а работает?

И еще ... господа форумчане, сию методу сам придумал когда то ... А как "классически" реализуются такие обработки? Может кто подскажет? Может намного лучше есть идеи?!
AndryG вне форума  
Непрочитано 30.11.2006, 13:02  
svorog1
Прохожий
 
Регистрация: 29.11.2006
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
svorog1 на пути к лучшему
По умолчанию

ага работает
svorog1 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собираем глюки и "подводные камни" AVR и AVR Studi Don_Ambrosio Коллекция глюков 27 14.11.2010 12:24


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot