whether the following debouncing logic will work well: the total cycle for code is 50ms and each function is executed only once during the cycle.
void main() { signed int deb_Counter=0; while(1) { input(); process(); output(); } } int debounce() { if(key_pressed) { deb_Counter++; } else { deb_Counter--; } if(deb_Counter>10) { deb_Counter=0; return(1); } else { deb_Counter=0; return(0); } }
this code is reffered from web with thanks, karthik
Ahhem ...
You've done nothing to fix 'deb_Counter'.
And a glaring logic error ...
In 'debounce' you check for deb_Counter being greater than 10.
If it is, you reset to zero. If it isn't, you reset to zero.
How would it ever manage to get anywhere near 10?
Maybe you should return to first principals before embarking on a task such as this.