реклама на сайте
подробности

 
 
> CodeVisionAVR помогите по написанию!
ssvd
сообщение Oct 31 2009, 07:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 30-10-09
Пользователь №: 53 320



Задумка такая, надо одной кнопкой переключаться между циклами в которых что то выполняется, но если я нажимаю кнопку, то он проскакивает все циклы так как кнопку не успеваешь отпустить! Подскажите как лучше организовать алгоритм переключения одной кнопкой между циклами?!
Вот не правильный текст программы

Код
    //выводим на LCD "нажмите кнопку _start_"
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("Hello!");
    lcd_gotoxy(0,1);
    lcd_putsf("Press Start!");
    
    while(PINA.0){ } //бесконечный цекл, ждем нажатие кнопки старт!!!
    
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("Temp. beep");
    lcd_gotoxy(0,1);
    lcd_putchar(t_count);
    
    while(PINA.0){ //бесконечный цекл, ждем нажатие кнопки старт!!!
    //    if (PINA.3){ };
        if (PINA.1){ //если нажата кнопка +
            t_count++;
            lcd_gotoxy(0,1);
            lcd_putchar(t_count);
        };
        if (PINA.2){  //если нажата кнопка -
            t_count--;
            lcd_gotoxy(0,1);
            lcd_putchar(t_count);
        };
    }
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Oct 31 2009, 11:03
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Вот в этом архиве есть файл keyboard.c - в нём программное подавление дддребезга. А в файле hardware.c (hardware_ged_pressed_key()) - два варианта опроса клавиатуры - или кнопки, замыкающие вход процессора на массу или набор до четырёх кнопок, через резисторную цепочку подключенных ко входу АЦП на процессоре (до четырёх кнопок на один вход АЦП). Схемы резисторной цепочки в файле doc\keyboard_matrix.pdf

http://electronix.ru/forum/index.php?act=a...st&id=37570

Сообщение отредактировал Genadi Zawidowski - Oct 31 2009, 11:09
Go to the top of the page
 
+Quote Post
ssvd
сообщение Oct 31 2009, 12:20
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 30-10-09
Пользователь №: 53 320



Цитата(Genadi Zawidowski @ Oct 31 2009, 15:03) *
Вот в этом архиве есть файл keyboard.c - в нём программное подавление дддребезга. А в файле hardware.c (hardware_ged_pressed_key()) - два варианта опроса клавиатуры - или кнопки, замыкающие вход процессора на массу или набор до четырёх кнопок, через резисторную цепочку подключенных ко входу АЦП на процессоре (до четырёх кнопок на один вход АЦП). Схемы резисторной цепочки в файле doc\keyboard_matrix.pdf

http://electronix.ru/forum/index.php?act=a...st&id=37570


спасибо конечно, но ничего в этих текстах не понял (((
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 31 2009, 22:34
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(ssvd @ Oct 31 2009, 15:20) *
спасибо конечно, но ничего в этих текстах не понял (((


там, вроде, комментарии в файле keyboard.c на русском языке были, когд я писал.

Функция hardware_ged_pressed_key() из файла hardware.c возвращает прзнак того, нажата ли какая-либо из кнопок и, собственно, номер (код) кнопки. Никаких ожиданий в этой функкции нет, так как она вызывается из обработчика таймерного прерывания около ста раз в секунду. Там, где она вызывается (ищется любым текстовым редактором) в файле keyboard.c - учитывается текущее состояние клавиатуры и давится дребезг (а так же определяется состойние "зажатой" кнопки - для отработки автоповтора (две скорости) или возврата признака "длинного" нажатия в вызывающую программу через функцию
Код
/* получение скан-кода клавиши или 0 в случае отсутствия.
* если клавиша удержана, возвращается скан-код с добавленным битом 0x80
*/
uint_least8_t kbd_scan(uint_least8_t * key, uint_least8_t * repeat)
{
...
}


Сообщение отредактировал Genadi Zawidowski - Oct 31 2009, 22:45
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ssvd   CodeVisionAVR помогите по написанию!   Oct 31 2009, 07:07
- - demiurg_spb   Вам нужно применить алгоритм подавления дребезга к...   Oct 31 2009, 08:02
- - DRUID3   Нужно просто добавить задержку (насколько помню та...   Oct 31 2009, 08:15
|- - demiurg_spb   Цитата(DRUID3 @ Oct 31 2009, 11:15) Нужно...   Oct 31 2009, 08:27
- - DRUID3   Разумно... Но для такого объема программы - самое ...   Oct 31 2009, 08:31
|- - demiurg_spb   Цитата(DRUID3 @ Oct 31 2009, 11:31) Разум...   Oct 31 2009, 08:48
|- - ssvd   Цитата(demiurg_spb @ Oct 31 2009, 12:48) ...   Oct 31 2009, 09:12
|- - demiurg_spb   Цитата(ssvd @ Oct 31 2009, 12:12) Подскаж...   Oct 31 2009, 13:36
|- - ssvd   Цитата(demiurg_spb @ Oct 31 2009, 17:36) ...   Oct 31 2009, 15:43
|- - demiurg_spb   Цитата(ssvd @ Oct 31 2009, 18:43) как я у...   Oct 31 2009, 20:42
- - Vetal-Soft   Сделай так Код while(PINA.0){ }; //беско...   Nov 2 2009, 07:55
|- - ssvd   вот что написал, проверьте пожалуйста. вызывается ...   Nov 2 2009, 15:40
- - Vetal-Soft   бред... Модератор (rezident). Это сообщение являе...   Nov 3 2009, 08:33
|- - ssvd   Цитата(Vetal-Soft @ Nov 3 2009, 12:3...   Nov 3 2009, 13:51
|- - XVR   Цитата(Vetal-Soft @ Nov 3 2009, 11:3...   Nov 5 2009, 07:36
|- - ssvd   Цитата(XVR @ Nov 5 2009, 11:36) Ну перебо...   Nov 9 2009, 10:09
- - Vetal-Soft   Цитата(ssvd @ Nov 3 2009, 18:51) я вообще...   Nov 4 2009, 08:44


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016