Simular cuerda de reloj con un motor paso a paso

resulta que un antiguo reloj no funciona su sistema de cuerda ya es muy viejo pero
quiere ponerlo a funcionar solo requiero darle 6 vueltas a un motor a pasos
cada minuto
pretendo hacerlo funcionar con estos componentes
un Driver Tb6600 un motor a pasos nema 17 , un Arduino nano
el detalle esta que ocupe la librería TimeOne para el tiempo pero mi programa no funiona
cabe aclarar que el motor y todo funciona ya que si se girar el motor a pasos con el driver
con código sin delays y con código con delay

#include <TimerOne.h>

const int pul=4;
const int dir=5;
const int Ena=6;

const int pasosV=1200;  // total de pasos a dar = 6 vueltas
const unsigned long inter=800; //ancho del pulso 
unsigned long timeanterior=0;
boolean estadoP = false ;
int pasoactual = 0;
volatile boolean  mover = false;
volatile int seg=0;


void setup() {
Timer1.initialize(1000000);  // 1 segundo
Timer1.attachInterrupt (incseg);
 
}
void incseg(){ seg++;}
  

void loop() {
  
  if ( seg == 15) {
    mover = true;
    seg = 0;
if(mover == true){
    unsigned long timeactual = micros();
    
  if (timeactual - timeanterior >= inter ) {
  timeanterior = timeactual ;
  
  if(estadoP == false ){
    digitalWrite(pul,HIGH);
    estadoP = true ;
    
    }else { 
      digitalWrite(pul,LOW);
    estadoP = false ;
    pasoactual++;
    
    if(pasoactual >= pasosV){
    pasoactual = 0;
    mover = false;
      
    }
   }
  }
  
 }

}
}

este código funciona para mover el motor sin llevar el conteo de el tiempo
da las 6 vueltas y se para.
se realizo de esa manera ya que al ocupar una interrupción por tiempo están prohibidos los delays.

const int pul=4;
const int dir=5;
const int Ena=6;

const int pasosV=1200;// son 6 vueltas 
const unsigned long inter=800;
unsigned long timeanterior=0;
boolean estadoP = false ;
int pasoactual = 0;
boolean mover = true;


void setup() {
  

  pinMode(pul,OUTPUT);
  pinMode(Ena,OUTPUT);
  pinMode(dir,OUTPUT);
  digitalWrite(Ena,LOW);
  digitalWrite(dir,LOW);
}

void loop() {
  if (mover == true ){
  unsigned long timeactual = micros();
  
  if (timeactual - timeanterior >= inter ) {
  timeanterior = timeactual ;
  
  if(estadoP == false ){
    digitalWrite(pul,HIGH);
    estadoP = true ;
    }else { 
      digitalWrite(pul,LOW);
    estadoP = false ;
    pasoactual++;
    if(pasoactual >= pasosV){
    pasoactual = 0;
      mover = false;
    }
   }
  }
  }
}

Título editado Moderador debido a la falta de respuestas del OP

Primero indenta correctamente tu código (ctrl-T) para ver con claridad donde está el error.

Después intenta esto:

void loop() {

  noInterrupts(); // evitar que "seg" sea modificado por la interrupción mientras hacemos esto
  if ( seg >= 15) { // en teoría nunca debe ser >15. Es una buena práctica ponerlo así
    mover = true;
    seg = 0;
  }
  interrupts();

  if (mover) {
    unsigned long timeactual = micros();

    if (timeactual - timeanterior >= inter ) {
      timeanterior = timeactual ;

      if (estadoP == false ) {
        digitalWrite(pul, HIGH);
        estadoP = true ;

      } else {
        digitalWrite(pul, LOW);
        estadoP = false ;
        pasoactual++;

        if (pasoactual >= pasosV) {
          pasoactual = 0;
          mover = false;

        }
      }
    }

  }

}

Moderador
Te mando un privado con instrucciones para que modifiques el título
Lee las normas del foro

Yo veo algo básico y es que los pines no estan configurados como salidas

  pinMode(pul, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(Ena, OUTPUT);

Prueba tu código primero y luego prueba el de @mancera1979

Ahora probando el código de @mancera encuentro que se ejecuta muchas veces

NOTA: para @impalax no respondas sin corregir el título.

El programa genera un tren de 1200 pulsos cuadrados de 1.6ms cada 15 segundos en el pin pul