Если 4-мя битами включаются 16 выходов, то все биты выключены(0) будет соответствовать включению 1 выхода, все биты включены(1) будет соответствовать 16 выходу, ну и все остальные выхода будут аналогично задаваться, разве это не заморочено?
И как это внешне задаётся и как сделано в программе - это две разные вещи, короче, можно к времени включения добавить время включенного состояния и вычислить время выключения(удобней, чем самому вычислять)), по нему и выключать, а не по таймеру обратного отсчёта времени, надеюсь, понятно получилось объяснить?!