toggle ist käse, geht nur mit einem Pin ...
Ich rotiere die Anzeigen durch, habe quais
anzeige 1 an porta.1
anzeige 2 an porta.2 etc. bis
anzeige 5 an porta.5
dann hab ich n byte definiert mit &B00000001
das shifte ich per shift,left,1 eins weiter und bei
if byte.5=1 then byte=&B00000001
setze ich das wieder zurück.
dann brauch ich das byte jeweils nur in den port zu schreiben und die jeweilige anzeige ist selektiert.
danach nur noch das byte für die jeweilig anzuzeigende zahl ins portb schreiben und fertig ist die kiste ...

in meinem fall hab ich mir sowas wie n framebuffer gebaut, in den die jeweiligen anzeigen geschrieben werden
und im timer interrupt rufe ich nur noch das array ab und schreibs in den port ... ok, jetzt wo ich das lese
scheints recht verwirrend ... hmmm

hier n codeabschnitt von mir wie ich das im timer-isr gemacht hab

Shift Segment_rotate , Left , 1
If Segment_rotate.5 = 1 Then
Segment_rotate = &B00000001
Segment_select_pointer = 1
endif
Porta = Char_array_1(segment_select_pointer)
Portc = Char_array_2(segment_select_pointer)
Incr Segment_select_pointer

segment rotate ist in meinem fall per alias direkt auf den port (ääähmm wars D?) gelegt