1000000 / 19.5 = 51282.0512821 microseconds. Let's call it 51282. I doubt the extra precision is going to matter with a solenoid.
This might work...
const uint8_t SOLENOID_PIN = 13;
const unsigned long PulseWidth = 51282UL;
static unsigned long PreviousLeadingEdge;
static unsigned long CurrentHighWidth;
void setup( void 0
{
pinMode( SOLENOID_PIN, OUTPUT );
CurrentHighWidth = (PulseWidth / 2) /* some fraction of PulseWidth */;
}
void loop( void )
{
unsigned long Now;
Now = micros();
if ( Now - PreviousLeadingEdge >= PulseWidth )
{
digitalWrite( SOLENOID_PIN, HIGH );
PreviousLeadingEdge += PulseWidth;
}
if ( Now - PreviousLeadingEdge >= CurrentHighWidth )
{
digitalWrite( SOLENOID_PIN, LOW );
}
}