Hallo Ich lasse 2 Mc AT89c51 über die serielle schnittstelle miteinander kommunizieren, das funktioniert eig alles, abgesehen davon, dass der serielle Interrupt des Empfangsbit Ri nur einmal ausgeführt wird. der programmtext für das interrupt lautet: SINT: ajmp Serieller Interrupt ; weiterer Programmtext Serieller Interrupt: if Bit RI then clr ri mov p2,sbuf cpl p3.4 ;daher weiß ich dass der serielle interrupt nur das erste mal nach dem reset ausgeführt wird jmp warteschleife else reti end if Ja- hm findet jemand meinen Fehler? gibt es noch einen Interruptbit den man reseten muss? Schon mal Danke im vorraus Mit freundlichem Gruß Johannes
Hallo Johannes, steht am Ende von "Warteschleife" auch ein "reti"? Gruss Otto
ja also die schaltung funktionier so dass der Sender eine Adresse sendet und dann ca 500 ms auf eine antwort wartet, (was heißt dass er dann in den Interrupt s.o. springt) sollte die antwort nicht kommen, dann frägt er die nächste adresse ab. also er bleibt nicht hängen und die antwort kommt auch jedes mal -hab ich mit dem oszi überprüft wenn du das gemeint hast Gruß Johannes
Johannes wrote:
> wenn du das gemeint hast
Nein.
Interrupts müssen immer mit RETI beendet werden und nicht mit "JMP
Irgendwohin".
Das RETI sagt der CPU nämlich, daß der interrupt fertig ist und ab dann
der nächste Interrupt behandelt werden darf.
Die CPU kann nicht in Deinen Kopf sehen.
Peter
Aha ok jetz weiß ich mehr-darauf wär ich nicht gekommen OK ich werds dann morgen mal ausprobiern VIELEN DANK Johannes
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.