Na da mach Dir mal über die paar Takzyklen keine Sorgen, das ist völlig okay und spielt nicht annähernd eine Rolle bei deiner Anwendung.
Und richtig, der PIC braucht ja für die Befehle entsprechend Zeit.
Das würde in Assembler ungefär so aussehen.
Code:
movf data,W ; Daten ins W Register laden
bcf LATC,0 ; Chip Select Low
movwf SSPBUF ; Daten ins Schieberegister
bcf PIR1,SSPIF ; Interrupt Flag löschen
wait:
btfss PIR1,SSPIF ; scip, wenn SSPIF Bit gesetzt ist
goto wait ; ansonsten weiter warten
bsf LATC,0 ; Chip Select wieder High
Was dein Compiler draus macht weis ich ja nicht. Aber den erzeugten Assembler Code kannst Du Dir sicher auch irgendwie ansehen.
Dann schaust Du in das Instruction Set von dem PIC und dort sind die Taktzyklen pro Befehl zu finden und kannst, wenns Dich interessiert, exakt ausrechnen wie lange er also braucht für den erzeugten Code.
Also selbst wenn er 10 Mikro Sekunden brauchen würde um ein Byte rauszuschicken, braucht er für 3 Bytes (24 LEDs) grad mal 30 Mikrosekunden. Du könntest also theoretisch rund 3333 mal pro Sekunde komplett neue Daten zu deinen LEDs schicken. Ich denke da brauchst Du Dir wirklich keinen Kopf drüber machen. Geniess das Wochenende udn programmier einfach weiter
-------------------------------------------------
Instruction Set : Seite 270 im Datenblatt. Tabelle TABLE 24-2
Lesezeichen