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

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

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

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

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

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

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

 
Опции темы
Непрочитано 10.09.2007, 20:40  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию Кнопки

Привет!
МК ATmega16.
К PIND.6 присоединена кнопка, выводом на ‘-’.
В программе хочу, в зависимости от численного значения счетчика ‘n’, выводить то или иное сообщение на ЖК:

Код:
int n = 0x30;

//---------------------------------------------------------
Пропускаю конфигурацию портов и таймеров
//---------------------------------------------------------

DDRD=0x00;
PORTD=0x00;

//---------------------------------------------------------
Пропускаю конфигурацию портов и таймеров
//---------------------------------------------------------

while(1)
{
if(PIND.6==0)
n=n+1;
switch(n)  8) 
{
Case 1: 
            lcd_clear();
            lcd_gotoxy(1,0);
     lcd_putsf("Hello");
Break;

Case 2: 
      lcd_clear();
      lcd_gotoxy(1,1);
      lcd_putsf("avr123.nm.r");
Break;  :P 

Case 3: 
             lcd_clear();
             lcd_gotoxy(2,1);
     lcd_putsf("u");
Break;
}
}
Почему-то не работает. Не подскажите, что я не правильно делаю?



Ну сколько раз повторять ..
Выкладываете код используйте соответствующую кнопку...
dosikus
Реклама:
retcom вне форума  
Непрочитано 10.09.2007, 21:02  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

если ограничить n, то появится прекрасный генератор случайных чисел
Код:
n++;
if (n›3)n=1;
urry вне форума  
Непрочитано 11.09.2007, 00:36  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Ну как делать-то?, вернее, где я неправ?
Покажите. а я буду делать по образу и подобию...

Код:
Ну сколько раз повторять .. 
Выкладываете код используйте соответствующую кнопку... dosikus
Ладно, ладно. Я не думал что это так важно. Впредь буду делать.
retcom вне форума  
Непрочитано 11.09.2007, 00:43  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Цитата:
если ограничить n, то появится прекрасный генератор случайных чисел
Ваша правда дяденька!
Когда я нажимал на кнопку. то появлялись знаки, а то и цифры - все разные! (во кошмар!). Я так понимаю, что надо это как то застопорить. Только как? С дребезгом контактов это имеет отношение?
retcom вне форума  
Непрочитано 11.09.2007, 03:29  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Веди задержку между отображениями например одну секунду и будет легче смотреть что к чему.И поставь чтоб зацикливалась ожидая второе нажатие кнопки,но задержку надо,ведь есть дребезг контактов и програма то выполняется моментально.
CERGEI1982 вне форума  
Непрочитано 11.09.2007, 05:09  
Drex
Прописка
 
Аватар для Drex
 
Регистрация: 16.04.2004
Сообщений: 201
Сказал спасибо: 337
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Drex на пути к лучшему
По умолчанию

Дребезг здесь ни причем, тут в принципе неправильная обработка кнопки. Во первых, обрабатывать надо не единицу на порте, а именно перепад с 1 на 0. Во вторых, нужно устранять дребезг. Я уже не первый проект это делаю в прерываниях по таймеру. Благо он всегда у меня использовался. Особенно удобно, если есть динамическая индикация. К ней привязать опрос порта кнопки на каждом цикле - не проблема. Затем счетчик. Если кнопка нажата увеличиваем на 1, если нет, обнуляем. Как только счетчик достиг определенного значения, то значит дребезг завершился, и можно выставлять флаг "Кнопка нажата". Все это делается в циклическом прерывании. А затем уже в основной программе идет спокойная обработка события по нажатию, и сброс флага "Кнопка нажата". Немного доработав этот алгоритм, запросто можно различать короткие и длинные нажатия. У меня есть такой пример на асме для пика. И есть еще пример на С для пика, но там отрабатывается не короткие-длинные, а одинарные, двойные и тройные нажатия. Одна кнопка - три функции. Если интересно могу выслать.
Drex вне форума  
Непрочитано 11.09.2007, 06:04  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Выложи тут же,для пика хочу посмотреть,можно и на си.
CERGEI1982 вне форума  
Непрочитано 11.09.2007, 09:59  
Drex
Прописка
 
Аватар для Drex
 
Регистрация: 16.04.2004
Сообщений: 201
Сказал спасибо: 337
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Drex на пути к лучшему
По умолчанию

Что именно выложить ?
Drex вне форума  
Непрочитано 11.09.2007, 21:51  
rremix
Временная регистрация
 
Регистрация: 01.11.2006
Сообщений: 66
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rremix на пути к лучшему
По умолчанию

2 CERGEI1982
ну, например, так :
Код:
ScanKbd
	clrf 	PORTB
        .
        .
        . Дабы не занимать место на странице - убито
        . см. на следующей стр. откомменти-
        . рованную версию
        .
	goto 	SK.NC.Loop
	return
описать переменные и константы, думаю, не составит труда. А функции BtnPress...BtnHold выглядят как таблицы:
Код:
BtnPress
    andlw   0x0F
    movwf   Tbl_Tmp
    movlw   high(Font)
    movwf   PCLATH
    movfw   Tbl_Tmp
    addwf   PCL,F

	return 	
	return
	return
	return
	return
	return
	goto 	Key1P
	goto 	Key2P
	goto 	Key3P
Только, боюсь, утонет вопрошающий, потому
2 retcom
упрощенный вариант в этом случае (без подавления дребезга):
Код:
char pressed;
if(PIND.6==0) 
{
 if (0==pressed)
   n=n+1;
 pressed = 1;
} else {
  pressed = 0;
};
rremix вне форума  
Непрочитано 12.09.2007, 01:51  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Цитата:
Веди задержку между отображениями например одну секунду и будет легче смотреть что к чему.И поставь чтоб зацикливалась ожидая второе нажатие кнопки,но задержку надо,ведь есть дребезг контактов и програма то выполняется моментально.
Ты прав в абсолюте. Я это и сам понимаю. Как это в кодировке отобразить?

Цитата:
Дребезг здесь ни причем, тут в принципе неправильная обработка кнопки. Во первых, обрабатывать надо не единицу на порте, а именно перепад с 1 на 0. Во вторых, нужно устранять дребезг. Я уже не первый проект это делаю в прерываниях по таймеру. Благо он всегда у меня использовался. Особенно удобно, если есть динамическая индикация. К ней привязать опрос порта кнопки на каждом цикле - не проблема. Затем счетчик. Если кнопка нажата увеличиваем на 1, если нет, обнуляем. Как только счетчик достиг определенного значения, то значит дребезг завершился, и можно выставлять флаг "Кнопка нажата". Все это делается в циклическом прерывании. А затем уже в основной программе идет спокойная обработка события по нажатию, и сброс флага "Кнопка нажата". Немного доработав этот алгоритм, запросто можно различать короткие и длинные нажатия. У меня есть такой пример на асме для пика. И есть еще пример на С для пика, но там отрабатывается не короткие-длинные, а одинарные, двойные и тройные нажатия. Одна кнопка - три функции. Если интересно могу выслать.
Да я знаю
Ты можешь помочь мне это в коде отабразить? Уточню:
Имеем три строки. Первое нажатие на кнопку - строка один, ... , ... - строка три.

DDRD=0x00;
PORTD=0x00; Это правильно у меня?

PIND.6 -----КНОПКА------ "-"
Так?

rremix: Не сработало (сишный код, Азмовский не пробовал).
retcom вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержка нажатой кнопки yostaf Электроника - это просто 31 15.04.2008 13:37
Опрос кнопки Electric111 Микроконтроллеры, АЦП, память и т.д 15 18.12.2007 22:48
Снова кнопки.... dosikus Микроконтроллеры, АЦП, память и т.д 34 10.08.2007 20:46


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


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