If you really need to use unsigned char then you can use
unsigned char i = 0;
do {
// ...
} while(++i);
When an arithmetic operation on an unsigned integer breaks its limits, the behaviour is well defined. So this solution will process 256 values (for 8-bit unsigned char).