Scrap that request. It was a bad use of PROGMEM. Delete the whole line:
#include <avr/pgmspace.h> // for PROGMEM
and the keyword
PROGMEM from the pinmapping line:
const PROGMEM char SegPin[]={7,6,5,11,10,8,9,4};
and also from the 'font' line:
const PROGMEM segbit_t Seg7font[]={
I'm too used to Microchip's C18 where the ROM qualifier works the way I thought PROGMEM did, and XC8 where const is overloaded to mean ROM.
Apparently you have to use special macros under AVR GCC to fetch data from PROGMEM so my code was using garbage pin numbers and segment patterns.
After the above fix, I've tested it on a genuine Uno with the O.P.s original pin mapping to a LTS7760R single digit common cathode display (with 330R resistors in each segment line) and it now works flawlessly. I also tested the commented out loop version.
I'm correcting the original post to avoid confusion.
Edit: Replaced attached sketch. Removed some debug printf() statements from the commented out loop version of write7seg(). Changed to use #if 1 or #if 0 instead of commenting out code.--
'Air Code' is the programmer's equivalent of 'Air Guitar' but is a *LOT* more embarrassing ;-)