Naime u sklopu necega trebam napraviti da kada pritisnem tipku (koja je spojena na uP) da mi se jednoj varijabli pribroji odrjedjena vrjednost. Ali trebam po stisku pribrojiti samo 1, znaci ne treba pribrojavati dokle god je tipka stisnuta nego samo jednom, odnosno na rastuci brid koji dolazi na port. Nadam se da me shvacate. E sad kod koji sam napisao glasi:
Code: Select all
uint8_t state; // globalna varijabla
... // deklaracije funkcija, pocetak main itd...
while (1) {
disp_n(count);
if (button( &PINA, 0)) count++;
if (button( &PINA, 1)) count+=10;
if (button( &PINA, 2)) count+=100;
}
... // neki kod izmedju i kraj main() funkcije
uint8_t button(volatile uint8_t *port, uint8_t pin) {
if ( (*port & (1 << pin)) && (state == 0)) {
_delay_ms(10);
if (*port & (1 << pin)) {
state=1;
return 1;
}
}
if ( !(*port & (1 << pin)) && (state == 1)) state = 0;
return 0;
}