Вс апр 27, 2014 05:38:13
HHIMERA писал(а):delay() к чему относится???
А если МК имеет хардварную обработку кнопок???
HHIMERA писал(а):И в догонку...КРАМ писал(а):Из серии printf ...
А что... printf так тяжек для нежного и ранимого мозга???
А если он хорошо ложится под задачу... почему бы и нет??? Или костность мышления не позволяет???
Вс апр 27, 2014 10:10:57
КРАМ писал(а):Можешь назвать МК с хардварной обработкой кнопок?
слово "универсальный"
Телега все же находится позади лошади...
Вс апр 27, 2014 10:52:24
HHIMERA писал(а):КРАМ писал(а):Можешь назвать МК с хардварной обработкой кнопок?
Cortex M0 от Nuvoton... хотя к данной теме это и не относится...
HHIMERA писал(а):Нечего сказать по теме, так лучше промолчи...
Вс апр 27, 2014 11:43:23
Вс апр 27, 2014 18:48:31
Пн апр 28, 2014 09:18:37
#include <mega8.h>
#include <delay.h>
unsigned char a=0; //переменной "а" присвоить "0"
void main(void)
{
PORTB=0x00; //PORTB-выход(0)
DDRB=0x01;
PORTC=0x01; //PORTC-вход(1)
DDRC=0x00;
while(1)
{
if(PINC.0==0) //если кнопка нажата
{
delay_ms(50); // ждем 50мс
if(PINC.0==0) // проверяем еще раз, если нажата
{
a++; // инкриминируем "а"
}
while(PINC.0==0) // ждем отпускания кнопки
{
}
if(a==2) // если "а" равно 2(кнопка нажата 2 раза)
{
PORTB.0=1; // "1" на порт Б
a=0; // обнуляем "а"
}
}
}
}
Пн апр 28, 2014 10:27:31
if(PINC.0==0) //если кнопка нажата
{
delay_ms(50); // ждем 50мс
while(PINC.0==0) continue; // ждем отпускания кнопки
if(++a>=2) // если "а" равно 2(кнопка нажата 2 раза)
{
PORTB.0=1; // "1" на порт Б
a=0; // обнуляем "а"
}
}
Пн апр 28, 2014 12:03:29
Пн апр 28, 2014 12:12:47
Пн апр 28, 2014 12:16:18
Понятие правильно - субъективное. Правильно все то что работает, а правильней - то что при этом просто и красиво выглядит.хочется все делать правильно
while(1)
{
delay_ms(10); // Это самый простой способ соблюсти условие для нижней строчки
butt = PINC.0 // Главное здесь именно эта строчка, она должна выполнятся максимум один раз в 10мс, если соблюсти это условие - дребезг будет не страшен.
if(butt <> last)
{
if(butt ==0) {момент когда кнопка нажата}
if(butt ==1) {момент когда кнопка отпущена}
}
last = butt
}
Пн апр 28, 2014 12:54:26
ARV писал(а):ну почему не слушаете советов?!
Пн апр 28, 2014 15:02:12
sanyo.95 писал(а):ну почему не слушаете советов?!
Пн апр 28, 2014 17:41:48
Пн апр 28, 2014 21:16:41
КРАМ писал(а):Рискну привести вариант с системным таймером в виде диаграммы работы:
Вт апр 29, 2014 11:38:29
Вт апр 29, 2014 13:36:26
КРАМ как раз и предлагает сделать на таймере .....FreshMan писал(а):тоесть....., вы хотите сказать что использование системного таймера при обработке кнопки является не целесообразным ?
Вт апр 29, 2014 13:59:57
Ср апр 30, 2014 09:19:57
Ну и напрасно, потом начнутся проблемы, связанные с выполнением отдельных кусков кода.sanyo.95 писал(а):становлюсь пока на том что получилось.
Ср апр 30, 2014 12:49:23
Чт май 01, 2014 17:34:11
sanyo.95 писал(а):Вы имеете в виду прерывания от таймера. Т.е. поместить опрос кнопки в обработчик прерываний? Или как?