I successfully fixed our kitchen today using a MSP430G2211, roadrunner84's code and CCS. There's a pitfall in roadrunner84's code, though:
if (debounce(state0, P1IN & BUTTON0, &count0))
The second argument does not evaluate to 'true' in (at least my) CCS but to the integer representation of
P1IN & BUTTON0
Thus,
if (read == state)
does not work as intended. In my version of the code I fixed it like this:
if (debounce(state0, (P1IN & BUTTON0) > 0, &count0))
I know that this is also far from safe in a C90 kind of way, but it works.
Oh, and b