Your debounce circuit does not look right to me. I am use to seeing the circuit more like in this image below:
So just for my sanity, I will explain using my circuit.
Problem: When pressing a button, the mechanical contacts springiness cause actual mechanical bounce which gives multiple false triggers _|_||||__|||||___ instead of __|_____.
Each bounce would appear as a switch press although you only pressed once.
Solution: Switch Debouncer, comprised of two functional blocks.
1. Bounce Filter (RC filter)
2. Schmidt trigger inverter
1. RC filter - Basically all the switch bounce is removed by the RC filter, this is due to the RC time constant which is large compared to the bounce time.
2. The Schmidt trigger Inverter - This is used due to the RC filter. The RC filter causes real slow rise and fall times which violates the rise and fall time specs of digital inputs. The schimdt trigger uses a different VIH input level than the VIL input level to prevent multiple false triggering on a slow noisy rising or falling edges.