Hallo liebe Programmiergemeinde, ich hab da wiedermal ne frage! Nachdem
ich nun weis das man das Register TCNT0 beschreiben und lesen kann bin
ich auf neue Probleme gestoßen!
Hier mal der Quellcode nur der Loop-Teil der verhergehende rest ist mir
ja klar, los gehts :
loop: wdr
rjmp LED1
Led1: ldi r16,0b00000101
ldi r17, TCNT0
cpse r17,R16
rjmp loop
sbi PORTD,0
rjmp loop
onTCO: cli
ldi r16,0b00000000
out PORTD,r16
sei
reti
Kurzbeschreibung was das Programm machen soll!
1. einen Timer von 0-255 zählen lassen,
2. im register R16 soll ein Vergleichswert stehen der dann mit dem
Zählerregister TCNT0 verglichen wird und bei gleichheit die LED
einschaltet die bis zum Overflow an ist, aber bei ungleich wieder zur
Mainloop springt und solange den wert vergleicht bis die LED an ist.
3. Bei overflow sollen alle Leds zurück gesetzt und von vorne
anfangen werden.
Haut das hin wie ich mir das so gedacht habe oder hauts net hin, wenn
nicht was kann man besser machen! (Programm läuft net bei mir!)
Danke!
MFG
Steven
Also du hast ja ziemlich... "gewöhnungsbedürftigen" Code produziert. Also:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
Ausserdem solltest du für solches Zeugs eher den Interrupt verwenden (Wenn du denn noch eine Compare-Einheit frei hast). Ansonsten vielleicht eher so: (Alles ungetestet)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Erklärung: Deine Bedingung für die LED kannste auch umschreiben: "Wenn TCNT0 grösser oder gleich 0b00000101 ist, dann soll die LED eingeschaltet sein, ansonsten nicht". Das sollte mein Code machen.
Ja ist gewöhnungsbedürftig geb ich zu man könnte ja auch noch sagen das ich blutiger anfänger bin! Wir behandeln in der Schule den Z80, es gibt zwar parallelen zu andere Mikrocontrollern, aber vom Syntax ist das ne ganz andere schreibweise und beides gleichzeitig lernen ist net einfach! Ich selber, brauche unteranderem viele verschiedene Codebeispiele um den Syntax richtig verstehen zu können! Danke erstmal werde ihn morgen mal ausprobieren! MFG