80c51 Serieller RI Interrupt funktioniert nur das erste mal

Gast #474226
Lesenswert?

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
Gast #474245
Lesenswert?

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
#474257
Lesenswert?

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


Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren