Several ways to tackle this -
1) Logic pattern generators do have single shot capabilty, some logic
analyzers have pattern generation capability as well.
2) Do it with a PSOC, see attached screen shot of a solution. You can
use PSOC 5LP high end part, board is $ 10, or low end PSOC 4, board
is $25, arduino footprint. Note in this instance its all HW, only takes
one line of code, you have to issue a PWM1_Start(); command.
Button pushes during the cycle do not retrigger until end of cycle.
PWM is edge triggered so I did not bother debouncing the button,
otherwise I would have used the debouncer component.
Regards, Dana.