Si, el tema sería mas o menos así:
Inicio de micro
configuración de puertos, etc etc
configuración de timer por interrrupciones
Ir a Principal
Interrupciones
contador 5s = 100 ? ( suponiendo que hagas interrupciones cada 50ms)
no= incrementar contador 5s +1 y salir interrupciones
si , entonces Flag contador =1 y salir interrupciones
Principal
Flag contador=0
- pulsador activado?
no= espero
si= antirrebotes (20ms creo que es suficiente y no influirá tanto en tus 5 segundos)
activar timer y poner contador 5 segundos a 0
- pulsador desactivado?
no= espero (mientras tanto el contador se va incrementando por cada interrupcion)
si , entonces preguntamos si Flag contador = 1
no= no ha llegado a 5 segundos . Vamos a menu "es menor de 5s"
si= ha llegado a 5 segundos. Vamos a menu "es mayor a 5s"
es menor a 5s
Hacemos bla bla
ir a Principal
es mayor a 5s
Hacemos blu blu
ir a Principal