I also use Atmel MCUs (C51 series). Their pins are mostly open collector (lightly pulled up internally to give a state of 1 if not connected). To me, I prefer using a pin for active output by writing a 0 to it (CLR portPin). So if I need to drive a small LED, I connect its anode to Vcc and I add a resistor between its cathode and the pin. For example if it is a red LED (hence about 1.8 to 2.2 V forward) and 10mA is good, the resistor could be calculated approximatly in case Vcc=5V with the simple formula R=(5-2)/10 in KΩ. The actual LED current will differ a bit.
In your case there are many LEDs so, as you already thought, an interface circuit (using a transistor for example) should be added to isolate the LEDs supply from Vcc.
Your circuit is good looking but I am afraid it is not practical in this case.
The good one (in its simplest form) will need also a transistor and 2 resistors but connected differently.
I will try to draw it for you though you (or another friend here) might be able to do it more quickly than I.
Kerim
Edited:
Since you said 19V and 20 red LEDs, it seems your LEDs are arranged in two branches in parallel having 10 LEDs each. In this case I prefer to add a resistor in series to each branch. So now the number of resistors in the new circuit is 3 instead of 2.