How to get arduino to print something excatly once every milisecond?

bwenox:
skips a ms sometimes.

I'd use TimerOne:

#include <TimerOne.h>
constexpr size_t NUMBER_OF_READINGS = 200;
constexpr uint32_t MICROS_BETWEEN_READINGS = 1000; // 1 millisecond

volatile int voltage[NUMBER_OF_READINGS];
volatile uint32_t timee[NUMBER_OF_READINGS];
volatile int pulseCount = 0;

void setup() {
  Serial.begin(250000);
  Timer1.initialize(MICROS_BETWEEN_READINGS); 
  Timer1.attachInterrupt(readPin);
  Serial.println(F("Let's Go!"));
}

void loop() {
  if (!pulseCount) {
    Serial.println(F("Values:"));
    for (int i = 0; i < 200; i++) {
      Serial.print(F("Reading "));
      Serial.print(i);
      Serial.print("\tVoltage: ");
      Serial.print(voltage[i]);
      Serial.print("\tMicros: ");
      Serial.println(timee[i]);
    }
    delay(10000); // <<<<<<<<<< holding here to slow the data
    pulseCount = NUMBER_OF_READINGS;
    Timer1.start();
  }

}

void readPin(void) {
  if(pulseCount--) {
    voltage[pulseCount] = analogRead(A0);
    timee[pulseCount] = micros();
  } else {
    Timer1.stop();
  }
}