Самый просто и быстро реализуемый, но далеко не самый оптимальный способ: Основываясь на иллюстрации, интервалы одинаковы.За один период четыре события.
Ну так пусть таймер срабатывает четыре раза за период повторения.
А обработчик прерываний делает так:
Первое срабатывание- верхний выход в единицу; второе срабатывание- верхний выход в ноль; третье срабатывание- нижний в единицу; четвёртое- нижний в ноль.
Если периоды разные, обработка прерываний несколько иная.
Зато подходит даже для тех 51, у которых нет аппаратного ШИМ.