It might not be obvious to the OP but by using the call to millis() you have also avoided the problem of inaccuracy by using the System time rather than a delay loop.
yep.
Mike, I was curious why you chose to use direct port i/o instead of digitalWrite. digitalWrite is one of the fundamental capabilities of Arduino and is almost always the best choice for controlling pins.