Single pin Port Manipulation

Until you want to change the pin you're using!

Maybe you would like this a little better then?

int LEDpin = 13;  //set LED pin

void setup()
{
  pinMode(LEDpin, OUTPUT);  //set LEDpin as output
}
void loop()
{
  for(int i = 0; i < 10; i++)
  {
    portWrite(LEDpin, HIGH); //Write LEDpin HIGH
    delay(100);
    portWrite(LEDpin, LOW);  //Write LEDpin LOW
    delay(100);
  }
  while(1);
}


void portWrite(int pin, int state){
  if (state == 1){ //write HIGH
  switch (pin){
    case 0: PORTD = PORTD | 0x01; break;
    case 1: PORTD = PORTD | 0x02; break;
    case 2: PORTD = PORTD | 0x04; break;
    case 3: PORTD = PORTD | 0x08; break;
    case 4: PORTD = PORTD | 0x10; break;
    case 5: PORTD = PORTD | 0x20; break;
    case 6: PORTD = PORTD | 0x40; break;
    case 7: PORTD = PORTD | 0x80; break;
    case 8: PORTB = PORTB | 0x01; break; 
    case 9: PORTB = PORTB | 0x02; break;
    case 10: PORTB = PORTB | 0x04; break;
    case 11: PORTB = PORTB | 0x08; break;
    case 12: PORTB = PORTB | 0x10; break;
    case 13: PORTB = PORTB | 0x20; break;
    case 14: PORTC = PORTC | 0x01; break;
    case 15: PORTC = PORTC | 0x02; break;
    case 16: PORTC = PORTC | 0x04; break;
    case 17: PORTC = PORTC | 0x08; break;
    case 18: PORTC = PORTC | 0x10; break;
    case 19: PORTC = PORTC | 0x20; break;
  }
  } else {// write low
  switch (pin){
    case 0: PORTD = PORTD & 0xFE; break;
    case 1: PORTD = PORTD & 0xFD; break;
    case 2: PORTD = PORTD & 0xFB; break;
    case 3: PORTD = PORTD & 0xF7; break;
    case 4: PORTD = PORTD & 0xEF; break;
    case 5: PORTD = PORTD & 0xDF; break;
    case 6: PORTD = PORTD & 0xBF; break;
    case 7: PORTD = PORTD & 0x7F; break;
    case 8: PORTB = PORTB & 0xFE; break; 
    case 9: PORTB = PORTB & 0xFD; break;
    case 10: PORTB = PORTB & 0xFB; break;
    case 11: PORTB = PORTB & 0xF7; break;
    case 12: PORTB = PORTB & 0xEF; break;
    case 13: PORTB = PORTB & 0xDF; break;
    case 14: PORTC = PORTC & 0xFE; break;
    case 15: PORTC = PORTC & 0xFD; break;
    case 16: PORTC = PORTC & 0xFB; break;
    case 17: PORTC = PORTC & 0xF7; break;
    case 18: PORTC = PORTC & 0xEF; break;
    case 19: PORTC = PORTC & 0xDF; break;  
    }
  }
}

edit: I just ran a speed test, and the portWrite command is 30% faster than the digitalWrite command, but almost 8 times slower than the straight port manipulation.