Nabend, wenn ich mit dem Timer 0 overflowed wird der TF0 zu 1, aber wie lang bleibt der eigentlich eins ? Mit meinem Simulator ist der fünfmal durch die Schleife nach einem Overflow, wie macht man es wenn er nur einmal durch soll und dann abwarten. org 8000h mov a,#01h mov p1,#01h MOV TMOD,#01 SETB TR0 b1:JNB TF0,$ rl a mov p1,a mov a,p1 ljmp Welcher befehl kopiert aus dem Akku in p1 ohne dass ich mov 2 mal machen muss
Sorry, ist klar der b1 muss vor SETB TR0 stehen. Aber wie kann aus dem Akku kopieren
Gerd Schanze schrieb: > wenn ich mit dem Timer 0 overflowed wird der TF0 zu 1, aber wie lang > bleibt der eigentlich eins Entweder bis der Interrupt ausgeführt wird oder bis Du es zurück setzt. Peter
Gerd Schanze schrieb:
> Ahja was ist mit Akku kopieren ?
Nach mov p1,a haben ACC und P1 den gleichen Inhalt, ein mov a,p1 ist
unnötig.
-Holger
Ja stimmt. Mal angenommen ich hab 16-Bit Mode drin. Dann zählt er bei 12 Mhz in 0,05 sek einmal durch. Was ist wenn ich längere Perioden brauche ?
Mal angenommen, Du willst 1-Sek-Perioden haben, dann lade r1 mit 20, lass alle 0.05 Sek den Interrupt auslösen, decrementiere R1 in der Interrupt-Service-Routine und prüfe auf Null. Ist R1 == Null, dann ist 1 Sekunde rum. -Holger
Gerd Schanze schrieb: > Echt spartanisch sogar c gegenüber ;) Was hast Du erwartet? Assembler ist auf jedem MC umständlicher als C. Wobei der 8051 noch ganz hübsche Kombibefehle hat (DJNZ, JBC, CJNE), die z.B. der AVR nicht hat. Und viele Befehle auch auf dem direkten RAM (0x00-0x7F) ausführbar sind. Z.B. das "DJNZ RAM-Variable" im Interrupthandler braucht nichtmal PUSH/POP, um Register zu sichern, da es weder Flags noch den ACCU verändert. 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.