Interrupts am Arduino: Rundenzähler

#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
#include <LiquidCrystal.h>
//
Adafruit_7segment matrix = Adafruit_7segment();
LiquidCrystal lcd(9, 8, 5, 4, 6, 7);
//
volatile unsigned long zaehlerrechts = 0;
volatile unsigned long millisrechts = 0;
volatile unsigned long speedrechts = 65000;
volatile unsigned long zaehlerlinks = 0;
volatile unsigned long millislinks = 0;
volatile unsigned long speedlinks = 65000;
//
void setup() {
    Wire.begin();
    attachInterrupt(0, rechtsHoch, CHANGE);
    attachInterrupt(1, linksHoch, CHANGE);
    matrix.begin(0x70);
    millisrechts = millislinks = millis();
    lcd.begin(16, 2);
    delay(500);
}
//
void loop() {
    lcd.setCursor(0, 0);
    lcd.print("schnellste Runde" );
    lcd.setCursor(0, 1);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    if (speedrechts < 65000) {
        lcd.print(speedrechts + "ms");
    } else {
        lcd.print("---- ms");
    }
    lcd.setCursor(8, 1);
    lcd.print(" ");
    lcd.setCursor(8, 1);
    if (speedlinks < 65000) {
        lcd.print(speedlinks + " ms");
    } else {
        lcd.print("---- ms");
    }
    int zaehler = 100 * zaehlerrechts + zaehlerlinks;
    matrix.writeDigitNum(0, (zaehler / 1000), false);
    matrix.writeDigitNum(1, (zaehler / 100) % 10, false);
    matrix.drawColon(true);
    matrix.writeDigitNum(3, (zaehler / 10) % 10, false);
    matrix.writeDigitNum(4, zaehler % 10, false);
    matrix.writeDisplay();
    delay(100);
}
void rechtsHoch() {
    unsigned long temprechts = millis() - millisrechts;
    if (temprechts > 700) {
        zaehlerrechts++;
        if (speedrechts > temprechts) {
            speedrechts = temprechts;
        }
        millisrechts = millis();
    }
}
void linksHoch() {
    unsigned long templinks = millis() - millislinks;
    if (templinks > 700) {
        zaehlerlinks++;
        if (speedlinks > templinks) {
            speedlinks = templinks;
        }
        millislinks = millis();
    }
}