Wieviele Takte braucht i=0; while (i<211) i++; und PORTB=0x04; ?
Kommt drauf an,was der C-Compiler daraus macht.Keiner der beiden Befehle kann mit einem Maschinenbefehl(== ein Taktzyklus bei den meisten Befehlen) abgearbeitet werden. PORTB =... wäre mit 2 Maschinenbefehlen noch am kompaktesten realisierbar,was aber nicht automatisch heisst,das das auch jeder C-Compiler so hinbekommt.Vor allem in niedrigeren Optimierungsstufen und bei Debug-Codes wird der Code etwas grösser ausfallen. Hängt aber u.a. auch noch davon ab,welcher Code davor kommt.Steht z.B die Variable 'i' in einem Register,kann 'i = 0;' mit einem Takt/Maschinenbefehl realisiert werden,ansonsten werden wieder 2 benötigt. Lies dir doch mal das Tutorial hier auf der Seite durch,damit bekommst du ungefähr ein Gefühl,wie welche C-Konstrukte in Assembler realisiert werden können.Uas dem Listing eines C-Compilers kann man auch sehen,wie der Compiler bestimmte Sequenzen übersetzt.Aber der generierte Code ist oft etwas komplizierter zu verstehen,wenn man keine Übung darin hat.
> Wieviele Takte braucht > > i=0; > while (i<211) i++; Irgendwas zwischen 0 (i nicht volatile) und 100000 (i double) Deshalb macht man sowas nicht. Entweder man nimmt nen Timer oder delay() aus der Bibliothek. Wer sagt, er hätte nicht genug Timer, einfach einen Timer frei laufen lassen, dann kann jeder Prozess ihn benutzen. Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.