Das kann doch ganz einfach sein; du definierst eine Tabelle mit Bytes,
in denen in jedem Byte 8 deiner auszugebenden Bits verpackt sind. Dazu
führst du einen Zeiger für die Bits im gerade aktiven Byte, einen
weiteren Zeiger auf die Bytes der Tabelle (globale Variablen!); bei
jedem Timerinterrupt liest du dann das Bit aus dem jeweils aktiven Byte
aus und gibt es auf den Ausgabepin, dann stellst du den Bit-Pointer
weiter und ggf. - bei Überlauf über die "7" hinaus" - stellst du den
Bitpointer auf null zurück und den Byte-Pointer weiter; dann fragst du
ab, ob die Tabelle zuende bearbeitet ist und stoppst dann oder fängst
von vorn an, wenns eine periodisch zu wiederholende Bitfolge sein soll.
Viel Erfolg.
Günter