mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 80c51 Serieller RI Interrupt funktioniert nur das erste mal


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Johannes,

steht am Ende von "Warteschleife" auch ein "reti"?

Gruss Otto

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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



Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha ok jetz weiß ich mehr-darauf wär ich nicht gekommen
OK ich werds dann morgen mal ausprobiern

VIELEN DANK

Johannes

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.