Conteggio avanti/indietro

Ciao a tutti,
con due display a 7 segmenti ,due 74HC595 e due pulsanti vorrei visualizzare un conteggio avanti /indietro da 0 a 99. Per quanto riguarda il conteggio in avanti va tutto bene ,il problema è quando decremento. Dal 9 allo 0 delle unita decrementa in modo corretto ma quando arriva sullo 0 mi aspetto che ritorni a 9 e decrementi di 1 le decine ma questo non succede. Ho scritto if (unita == - 1) perchè penso che la variabile unita di tipo byte quando passa a -1 non diventa negativa ma ritorna al valore impostato cioè 9. Ho provato a scrivere if (unita == 0) ma quando arriva a 1 decrementa di 1 le decine e non visualizza lo 0. Grazie a tutti in anticipo
Guido

//segmenti  A  B  C  D  E  F  G  dp
// N°0      1  1  1  1  1  1  0  0    0xFC
// N°1      0  1  1  0  0  0  0  0    0x60
// N°2      1  1  0  1  1  0  1  0    0xDA
// N°3      1  1  1  1  0  0  1  0    0xF2
// N°4      0  1  1  0  0  1  1  0    0x66
// N°5      1  0  1  1  0  1  1  0    0xB6
// N°6      1  0  1  1  1  1  1  0    0xBE
// N°7      1  1  1  0  0  0  0  0    0xE0
// N°8      1  1  1  1  1  1  1  0    0xFE
// N°9      1  1  1  1  0  1  1  0    0xF6

#define CLOCK_PIN 2         // pin 11  shift-register 74HC595
#define LATCH_PIN 3         // pin 12  shift-register 74HC595
#define DATA_PIN  4         // pin 14  shift-register 74HC595
#define puls_AV   5         // pulsante avanti incrementa
#define puls_IND  6         // pulsante indietro decrementa

boolean val;
boolean lastVal;
boolean val_ind;
boolean lastVal_ind;
byte unita;
byte decine;
byte tabella[10] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};

void setup() {
  pinMode(puls_AV, INPUT);
  pinMode(puls_IND, INPUT);
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(DATA_PIN, OUTPUT);
  digitalWrite(CLOCK_PIN, LOW);
  val          = LOW;
  lastVal      = LOW;
  val_ind      = LOW;
  lastVal_ind  = LOW;
  unita        = 0;
  decine       = 0;
}

void loop() {

  digitalWrite(LATCH_PIN, LOW);
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, tabella[unita]);
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, tabella[decine]);
  digitalWrite(LATCH_PIN, HIGH);
  
  val = digitalRead(puls_AV);                // lettura pulsante avanti incrementa
  if (val != lastVal) {
    if (val == HIGH && val_ind == LOW) {
      delay (40);
      unita ++ ;
      if (unita == 10)
      {
        unita = 0;
        decine ++ ;
        if (decine == 10)
          decine = 0;
      }
    }
  }
  lastVal = val;
  
  val_ind = digitalRead(puls_IND);           // lettura pulsante indietro decrementa
  if (val_ind != lastVal_ind) {
    if (val_ind == HIGH && val == LOW) {
      delay (40);
      unita -- ;
      if (unita == - 1)
      {
       unita = 9;
        decine -- ;
        if (decine == - 1)
          decine = 9;
      }
    }
  }
  lastVal_ind = val_ind;
}

un byte puo' avere solo dei valori positivi da 0 a 255, quindi decrementando non passi da 0 a -1. ma da 0 a 255

 if (unita == 255 )

la cosa è diversa se tu come variabile avessi usato una int

Ciao a tutti
grazie Brunello ho capito e ho risolto il problema.
Guido