Zrobiłem taki programik:
Wykorzystując program Freddiego Chopina:
Wszystko ślicznie działa.
Ale męczy mnie pomysł- czy da się to zrobić jednym przyciskiem?
Pierwsze przyciśnięcie- w lewo.
Drugie- w prawo.
Albo kolejno- każde przyciśnięcie w lewo aż do czterech- a potem w lewo od 4 do 1.
#define MASKA_ODCZYT 0b00001111
#define MASKA_WYJSCIE 0b11110000
//----------------------------------
if(flaga_przycisku>=4) //Ten fragment wykonuje się co16ms x4 z Timer0
{
uint8_t stan_przyciskow;
stan_przyciskow=debounce();
if(stan_przyciskow==1)
{
PORTB=(0x3|MASKA_WYJSCIE);//wyjście tylko na port0-3
LCD_GoTo(22,1);
LCD_WriteText("lewo ");
}
if(stan_przyciskow==2)
{
PORTB=(0xc|MASKA_WYJSCIE);
LCD_GoTo(22,1);
LCD_WriteText("prawo");
}
flaga_przycisku=0;
}
Wykorzystując program Freddiego Chopina:
unsigned int debounce(void)// funkcja Freddiego Chopina
{
static unsigned int last = 0;
unsigned int port;
unsigned int wynik;
port = PINC&MASKA_ODCZYT; //odczyt tylko z młodszych pinów
wynik=port&(~last);
last=port;
return wynik;
}
Wszystko ślicznie działa.
Ale męczy mnie pomysł- czy da się to zrobić jednym przyciskiem?
Pierwsze przyciśnięcie- w lewo.
Drugie- w prawo.
Albo kolejno- każde przyciśnięcie w lewo aż do czterech- a potem w lewo od 4 do 1.