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.