Lo más "fácil" sería usar dos TTimer: uno para los 30 segundos y otro para cada segundo, tal como comenta ecfisa, pero yo usaría sólo un TTimer que se activara cada segundo y fuera actualizando una variable (o el propio "Tag" del componente) y el TLabel hasta llegar a treinta, más o menos así:
Código Delphi
[-]
INTERFACE
TYPE
TMiForm = CLASS (TForm)
ElTimer: TTimer;
ElLabel: TLabel;
PROCEDURE onTimerTick (Sender: TObject);
PRIVATE
fContador: INTEGER = 0;
END;
IMPLEMENTATION
PROCEDURE TMiForm.onTimerTick (Sender: TObject);
BEGIN
INC (fContador);
IF fContador >= 30 THEN
BEGIN
fContador := 0
END;
ElLabel.Caption := IntToStr (fContador)
END;
Las ventajas son que usas menos recursos (y aún menos si en vez del campo fContador usas la propiedad Tag del TTimer), pero principamente evitaras tener que sincronizar dos TTimer diferentes, que puede parecer que no pero puede dar problemas.