Hallo
also ich habe mich soweit in die materie eingefunden, nur dass mir der
befehl in assembler fehlt, mitdem ich den Timer auf 0 setzten kann(also
er zählt wenn ich es will)! währe cool wenn ihr mir nochmal helfen
könntet!!!
mfg rugby4ever
Da ich nicht weiß, welchen Mikrocontroller Du einsetzt, fällt die
Antwort so allgemein aus wie Deine Frage:
Nimm den Assemblerbefehl, mit dem Du die Register anderer Module setzt
und ersetze die Registeradresse durch die des Zählerstandes.
Welche Registeradresse dies ist findest Du im Datenblatt Deines
Mikrocontrollers.
> nur dass mir der befehl in assembler fehlt
Noch mal (nachdem Du es in Deinem anderen Thread unter
Beitrag "Timer/Counter Setzen" anscheinend nicht verstanden
hast): Es gibt weder in C noch in Assembler einen speziellen Befehl, um
einen Timer irgendwie zu setzen (wohin auch immer). Du musst schauen, in
welchem Steuerregister die entsprechenden Bits stehen, mit denen Du dem
Timer sagen kannst, ob er laufen soll oder nicht (ich denke mal, das ist
es was Du mit "er zählt, wenn ich es will" meinst). Dazu musst Du im
Datenblatt des Controllers im Abschnitt, der sich mit dem Timer befasst,
nachsehen und anschließend die entsprechenden Assembler-Befehle
zusammensuchen, mit denen Du die Einstellungen am Steuerregister
vornehmen kannst.
hi
ich habe hier mal ein programm geschrieben, weiß aber net ob das so
funktionert weil mein nächstes problem ist, wie ich den zählerstand
angezeigt bekommen kann!
.NOLIST
.INCLUDE "8515def.inc"
.LIST
.DEF mp = R16
.def w1 = R1
.def w2 = R2
.def w3 = R3
.def z1 = R0
rjmp main
main:
ldi mp,LOW(RAMEND)
out SPL,mp
ldi mp,HIGH(RAMEND)
out SPH,mp
ldi mp,0x00
out DDRD,mp
ldi mp,0xFF
out PORTD,mp
ldi mp,0xFF
out DDRB,mp
out PORTB,mp
loop:
clr w1
clr w2
clr w3
sbis Pina,1
rcall Signal
sbic Pina,1
rcall Aus
sbis Pinc,2
rcall LED
sbic Pinc,2
rcall LEDaus
endloop:
rjmp loop
Signal:
cbi Portb,1
ldi mp,0
out TCCR0, mp
ret
Aus:
sbi Portb,1
ret
LED:
cbi Portb,2
in mp, TCCR0
ret
LEDaus:
sbi Portb,2
ret
ich gebe jetzt einen puls an Pina,1 und lasse mir erstmal den zustand
mit einer led an portb,1 anzeigen. wenn der erste puls kommt, soll der
timer auf 0 gesetzt werden und ab dann zählen! wenn jetzt ein puls an
portb,2 kommt, soll der timer seinen wert in das register mp schreiben!
das was jetzt noch fehlt ist, dass er seinen wert mir ihrgenwie anzeigt!
Ich sehe nirgends wo du den Timer überhaupt
einschaltest.
Warum folgst du nicht unserem Rat und siehst dir mal
die Tutorials etwas an?
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timerhttp://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR
Dafür wurden sie geschrieben (bzw. werden sie weiter geschrieben),
damit Anfänger mal einen Einstiegspunkt haben.
Auch das Datenblatt zu dienem µC wirst du brauchen. Das
kriegst du bei Atmel http://www.atmel.com, denn naturgemäß
enthalten Tutorials immer nur einen kleinen Auszug aus
den Möglichkeiten. Im Datenblatt ist aber alles beschrieben.
Nicht ganz so Benutzerfreundlich sondern mehr technisch.
Da greifen dann wieder die Tutorials. Aus den Tutorials
lernt man wie die Dinge grundsätzlich funktionieren und man
beut ein Grundverständnis auf. Mit diesem Grundverständnis
verlieren dann auch die Datenblätter ihren Schrecken, weil
man bereits einen Einstieg hat.
Rugby4ever wrote:
> ich gebe jetzt einen puls an Pina,1 und lasse mir erstmal den zustand> mit einer led an portb,1 anzeigen. wenn der erste puls kommt, soll der> timer auf 0 gesetzt werden und ab dann zählen! wenn jetzt ein puls an> portb,2 kommt, soll der timer seinen wert in das register mp schreiben!> das was jetzt noch fehlt ist, dass er seinen wert mir ihrgenwie anzeigt!
Dann musst du dich entscheiden wie der Wert angezeigt
werden soll. Das richtet sich aber mehr als alles andere
nach den Möglichkeiten deiner Hardware: Welche Geräte
hängen wo dran und welche kann man für Ausgaben benutzen.
Das kann von simplen LED an einem Port bis hin zu einer
Ausgabe auf einer Grossbildleinwand in einem Zahlensystem
zur Basis 60 reichen.