Для объединения двух цифр в одну вам нужно просто в своей функции принимать число не больше 99, разбивать на цифры и выводить на соответствующие экраны.
примерно так:
void numberToHT1621(int number) {
if (number > 99) {
number &= 0xffff;
}
int first_digit = number % 10;
int second_digit = number / 10;
// printf("%d %d", second_digit, first_digit); // for debug
// write number on display
Write_1621(27, first_digit);
Write_1621(29, second_digit);
}
Для таймера же я бы предложил вам реализовать функцию (а может даже класс?), которая каждые N тиков таймера микроконтроллера (или же при каждом прерывании аппаратного таймера, если они у вас настроены) будет отображать на дисплее новое число.
Вот вам ооочень неоптимальный, но рабочий, для микроконтроллера пример взятый абсолютно с полтолка.
При этом у вас должен быть какой-то цикл событий или что-то ещё, который будет постоянно вызывать updateTimer у данного таймера.
Среда Ардуино поддерживает аппаратные таймеры, но можно и просто в функции loop постоянно вызывать updateTimer.
class CountdownTimer {
public:
CountdownTimer(int timeInMCUTicks) : time(timeInMCUTicks) { }
void updateTimer(int ticks = 1) {
if (time <= 0) {
time = 0;
numberToHT1621(time);
return;
}
numberToHT1621(time);
time -= ticks;
}
private:
int time;
};