Much as I hate to try to prove myself wrong, try this, which substitutes byte for unsigned long, and "makes up" a one-byte millis:
#include <Streaming.h>
byte seconds = 0;
byte lastSecond = 0;
byte myMillis = 0;
int count;
void setup ()
{
Serial.begin (115200);
Serial.println ();
}
void loop ()
{
myMillis++;
if (myMillis - lastSecond >= 10)
{
seconds++;
lastSecond += 10;
}
// display seconds
Serial << "myMillis = " << _DEC (myMillis) << endl;
Serial << "lastSecond = " << _DEC (lastSecond) << endl;
Serial << "seconds = " << _DEC (seconds) << endl;
// stop if enough done
if (count++ > 300)
while (true) {}
} // end of loop
Output:
myMillis = 1
lastSecond = 0
seconds = 0
... blah blah ...
lastSecond = 250
seconds = 25
myMillis = 251
lastSecond = 250
seconds = 25
myMillis = 252
lastSecond = 250
seconds = 25
myMillis = 253
lastSecond = 250
seconds = 25
myMillis = 254
lastSecond = 250
seconds = 25
myMillis = 255
lastSecond = 250
seconds = 25
myMillis = 0
lastSecond = 250
seconds = 25
myMillis = 1
lastSecond = 250
seconds = 25
myMillis = 2
lastSecond = 250
seconds = 25
myMillis = 3
lastSecond = 250
seconds = 25
myMillis = 4
lastSecond = 250
seconds = 25
myMillis = 5
lastSecond = 250
seconds = 25
myMillis = 6
lastSecond = 250
seconds = 25
myMillis = 7
lastSecond = 250
seconds = 25
myMillis = 8
lastSecond = 250
seconds = 25
myMillis = 9
lastSecond = 250
seconds = 25
myMillis = 10
lastSecond = 250
seconds = 25
myMillis = 11
lastSecond = 250
seconds = 25
myMillis = 12
lastSecond = 250
seconds = 25
myMillis = 13
lastSecond = 250
seconds = 25
myMillis = 14
lastSecond = 250
seconds = 25
myMillis = 15
lastSecond = 250
seconds = 25
myMillis = 16
lastSecond = 250
seconds = 25
myMillis = 17
lastSecond = 250
seconds = 25
myMillis = 18
lastSecond = 250
seconds = 25
myMillis = 19
lastSecond = 250
seconds = 25
myMillis = 20
lastSecond = 250
seconds = 25
myMillis = 21
lastSecond = 250
seconds = 25
myMillis = 22
lastSecond = 250
seconds = 25
myMillis = 23
lastSecond = 250
seconds = 25
myMillis = 24
lastSecond = 250
seconds = 25
myMillis = 25
lastSecond = 250
seconds = 25
myMillis = 26
lastSecond = 250
seconds = 25
myMillis = 27
lastSecond = 250
seconds = 25
myMillis = 28
lastSecond = 250
seconds = 25
myMillis = 29
lastSecond = 250
seconds = 25
myMillis = 30
lastSecond = 250
seconds = 25
myMillis = 31
lastSecond = 250
seconds = 25
myMillis = 32
lastSecond = 250
seconds = 25
myMillis = 33
lastSecond = 250
seconds = 25
myMillis = 34
lastSecond = 250
seconds = 25
myMillis = 35
lastSecond = 250
seconds = 25
myMillis = 36
lastSecond = 250
seconds = 25
myMillis = 37
lastSecond = 250
seconds = 25
myMillis = 38
lastSecond = 250
seconds = 25
myMillis = 39
lastSecond = 250
seconds = 25
myMillis = 40
lastSecond = 250
seconds = 25
myMillis = 41
lastSecond = 250
seconds = 25
myMillis = 42
lastSecond = 250
seconds = 25
myMillis = 43
lastSecond = 250
seconds = 25
myMillis = 44
lastSecond = 250
seconds = 25
myMillis = 45
lastSecond = 250
seconds = 25
myMillis = 46
lastSecond = 250
seconds = 25
Once we reach lastSecond = 250, seconds gets stuck on 25.