Hi, ist es möglich den AT89S8252 so zu programmieren dass er zwischen dem einen Befehl der die Ports anschaltet und dem der die Ports wieder ausschaltet etwa 5 sek wartet?. Also das z.B. am Pin 2.6 für 5sek eine Spannung von +5V anliegt? Mit Dank im Vorraus, Lars
Hey genau dass will ich auch mal wissen.. wer erklärt uns mal wie das konkret geht. software mäßig isses ja kein problem, aber wer bitte schön kommt denn mit dem hardware timer klar und kann mir das mal erklären. danke
Was meinst du mit Software mäßig ist es ja kein problem, kannst du mir erklären wie ich es machen kann? MfG Lars
hi lars, also abhängig von deiner Taktfrequenz also dem Systemtakt vom Oszillator hast du mit diesem Code eine Verzögerung du greifst auf den 16bit Zähler zurück und kannst den Controller 6535 mal lehr eine Schleife abarbeiten lassen. jeder Durchlauf der Schleife umfasst 4 Taktzyklen des Controllers, daraus resultierend die Periodenzeit multipliziert mit 65535 dann hast du deine Pausenzeit, ;**********Zeitfunktion**************** ;**********generated by hansen********* ldi zh,high(65535) ; High-Byte auf höchsten Speicherbereich setzen ldi zl,low(65535) ; Low-Byte " " Zaehler: ; Beginn der Zählerschleife sbiw zl,1 ;subtrahiert den Wert 1 von ZL brne Zaehler ;Springe solange zu Zaehler bis ZL=ZH ;somit läuft das ding 65535 mal durch ;************************************************** Nachteil solch eines Software-Zählers ist,dass Du während dieser Pausenzeit dem Controller ausser seinen Interrupts nix machen lassen kannst. es sei denn du setzt ne Eingangsportabfrage in die Zählerschleife um in diese Zeifunktion eingreifen zu können. Noch besser wie ich dass hier dir gezeigt habe ist der Hardware - Timer, viel besser und vorallem durch den Timer-Interrupt bist du total flexibel in deinem Programm. wenn Du noch weitere Fragen hast, dann nix wie her damit, hab mich seit nem Monat mit nem AVR rumgeplagt hab jetzt e bissele ahnung von der sache. tschö, hansen
hi der 89s8252 ist doch gar kein AVR- dein Asemblerproramm wird der wohl nicht nehmen - oder irre ich mich da???? Auf http://www.erikbuchmann.de gibts einen Codegenerator - der macht dir auch PAusen auf µsec genau.... mfg Christian
Hi, wie Hansen schon gesagt hat, sollte man dafür den Timer benutzen. Natürlich geht das auch Softwaremäßig, allerdings ist dann der ganze Controller blockiert, während der Zähler von alleine läuft. Wenn er überläuft, dann gibts nen Interrupt. Hab leider keine Beispielroutine hier. Könnte ich dir frühestens morgen anhängen. Kannst aber auch unter http://www.batronix.com schauen. Die Programmiersoftware hat da ein Beispiel intus, wie der Timer zu programmieren ist, um einen 1s-Takt zu generieren. Bis denn, ERDI - Soft.
Danke für die vielen Antworten, hab jetzt erstmal das problem Softwaremäßig gelößt, wenigstens vorrübergehend. MfG Lars
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.