Hi,
I suspect you added 1ms delay, not 1us.
Correct, if the table is 25 entries for a full cycle and you want 50Hz output you need to index the table at 1250Hz. The delay between each update of the dutycycle should then be 1/1250=800us (so use PauseUs 800 and see what happens). Then, of course, the actual updating of the dutycycle registers takes some small amount of time so if it's critical you'll need to tweak the delay.

The first and last entry in your "lookup table" are one and the same ($1000) - you'll get a "flat spot" in the cycle.

Ah, OK, now I see what you're asking....Bruce is not multiplying anything.
He has a WORD-sized (two bytes) variable, called Duty. He's then assigning the high byte of Duty to PDC0H ( PDC0H=Duty.HighByte ) and the low byte of Duty to PDC0L ( PDC0L = Duty.LowByte ).

I'll have to read the datasheet for the deadtime thing and I don't have time for that at the moment, I'll try to get back to it later.

/Henrik.