halllo an alle spezialisten. ich weiß nicht so recht wie ich das machen soll ich brauche einen ansteigenden wert von 0->255 wenn der maximalwert erreicht ist soll das ganze wieder zurücklaufen also von 255->0 So eine Art halber sinus gibts da irgendwo beispiele
int i; while( 1 ) { for( i = 0; i < 256; ++i ) /* mach was mit i */ for( i = 254; i > 0; --i ) /* mach was mit i */ }
danke für dieb Schnelle Antwort und wie geht das im assembler Sorry hatte ich nicht gesagt
oder asm: loop: 'mache irgendwas '... cpi temp, 255 'zähler mit 255 vergleichen breq loop2 'wenn 255 dann anfangen mit runter zählen inc temp 'temp um 1 erhöhen rjmp loop 'zu loop springen loop2: 'mache irgendwas '... cpi temp, 0 'zähler mit 255 vergleichen breq loop 'wenn 255 dann anfangen mit rauf zählen dec temp 'temp um 1 verniedrigen rjmp loop2 'zu loop2 springen
Im Prinzip genau so. Du schnappst Dir ein Register und initialisierst es mit 0. Dann machst Du etwas mit dem Wert und zaehlst ihn hoch. Ist 256 (aka 0, da wir ja 8 bit Register haben) noch nicht erreicht springst Du zurueck zu 'mach was mit dem Wert'. Das war die erste Schleife, wie die zweite aussieht muesstest Du eigentlich jetzt auch selbst hinkriegen. Da kannst doch eine Zaehl-Schleife programmieren, oder?
Dein Code hat nur einen Fehler :-) mit 255 und 0 machst Du 2 mal 'mach irgendwas (Ich weiß, die Loesung ist trivial, aber Rene soll auch noch was zu tun haben).
Danke euch;-) nur noch ein Problem ich habe nicht mehr viele Register Frei und habe schon alles "verbraten" und müsste alles im RAM zwischenspeichern mit STS und LDS gibts da auch noch andere methoden. werte im RAM kan man ja nicht über den umweg eines Registers verändern oder?
@Karl Heinz Buchegger: ne, ich spring wieder zu loop zurück: breq loop 'wenn 255 dann anfangen mit rauf zählen @Rene dann solltest du generell auf SRAM umsteigen. Es ist nie gut wenn alle register benutzt sind
> loop: > > 'mache irgendwas > '... > cpi temp, 255 'zähler mit 255 vergleichen > breq loop2 'wenn 255 dann anfangen mit runter zählen > inc temp 'temp um 1 erhöhen > rjmp loop 'zu loop springen > > loop2: > > 'mache irgendwas > '... > cpi temp, 0 fang mal oben an und nimm an dass temp den Wert 255 hat 'mach irgendwas ; hier machst Du das erste mal was mit 255 cpi temp, 255 ; ist der Fall breq loop2 ; also wird der breq genommen loop2: 'mach irgendwas ; und hier machst du schon wieder was mit 255
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.