Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe bei Interrupt


von Daniel (Gast)


Lesenswert?

Juten Tach,

ich hab da mal so ne Frage, ich möchte mit nem AT89S8253 was bauen, ich 
habe nen IR-Empfänger, nen TSOP un jetz will ich immer dann wenn ich was 
mit der Fernbedinung sende, das mein Controller das mitbekommt, am 
besten wäre es über nen ext. Interrupt, jedoch verstehe ich das nicht 
ganz was im Datenblatt steht, gibt es noch eine andere Möglichkeit 
soetwas zu realisieren?!

(Der TSOP ist schon am ext. Interrupt 0 an Port 3.2 angelötet)

Ich Programmiere in Assembler

von digitaler fritz (Gast)


Lesenswert?

ist doch richtig so wie du es angeschlossen hast um den Interrupt 
einzuseten. Ohne Int verlierst du womoeglich die Anfangsbits.

Du musst zuerst wissen wie das,was du empfangen willst, aussieht.
Darauf richtest du die int-routine aus.
EXT0 und EA freigeben.

Suche dir Int Routinen im Netz und teste die um zb einen Pegel 
einzulesen .
Mache alles Schrittweise, damit du verstehst was du tust.
Keine Angst INT beisst dich nicht.
Ueben & Probieren !

von Daniel (Gast)


Lesenswert?

Also, mein TSOP liefert mir dauerhaft ein "high", das heißt die daten 
vom TSOP werden invertiert übertragen und in meinem Programm dann so 
umgeandelt, das sie richtig sind für die weiterverarbeitung.

Dann hab ich noch ne frage, da ich ja mit einem LCD am gleichen 
Controller arbeite, kann man auch z.B. wärend der Übertragung an das LCD 
den Interrupt deaktivieren?

von Daniel (Gast)


Lesenswert?

Und noch ne frage, da mir von nem Lehrer mal gesagt wurde, das man nen 
Interrupt festlegt und dann wenn der Pin das entsprechende Signal 
bekommt, das er dann in nen Programm abschnitt springt, der festgelgt 
ist, stimmt das?

von Herman (Gast)


Lesenswert?

Naja, er springt in ein Programmteil, dessen Einsprungsadresse dem 
jeweiligen Interruptvektor übergeben wurde.

von Daniel (Gast)


Lesenswert?

Als ich hab da mal ne weitere Frage, ich les mich da grade durch, EA und 
EX0 hab ich auf 1 geseztz im SFR, jetzt steht da das mal IT0 noch 1 oder 
0 setzen muss, aber ich finde im Datenblatt kein IT0, kann mir bitte 
jemand weiterhelfen??


IT0:
0 bedeutet pegelgesteuerter Interrupt
1 bedeutet flankengesteuerter Interrupt

von Daniel (Gast)


Lesenswert?

Mhm, ok, ich habe es glaub jetzt verstanden, jedoch finde ich nichts, 
das mir sagt, wie man das was unten steht, was in C geschrieben wurde in 
Assembler schreibt.

void ISR_INT0 (void) interrupt 0
{}


Bei Assembler ist der startpunkt so benannt:

cseg at 0


Kann mir bitte jemand helfen??

von Daniel (Gast)


Lesenswert?

Kann mir denn keiner helfen??

ich hab jetz so viele Seite gelesen, aber überall wird es nur in C 
erklärt, ich glaube ich habe verstanden, wie das Funktionier, jedoch 
weiß ich nicht, wie ich das mit der "Startadresse" des Interupts 
realisiere...

von digitaler fritz (Gast)


Lesenswert?

ich schreibe

            org 03h  ;int0
      ljmp int0_Tsop


;
;
;

int0-Tsop:
hier dei int routine
;
;
;
reti


main:....
;
;
;
     ljmp main

end

von Daniel (Gast)


Lesenswert?

wenn ich das so mache, dann geht garnichtsmehr, das Programm hängt sich 
auf.... =(

von Daniel (Gast)


Lesenswert?

das mit dem "org 03h  ;int0" mag keil nicht, wenn das drin ist, dann 
hängt es...

von Daniel (Gast)


Lesenswert?

Oder er springt immer automatisch in den int0-Tsop:  ...

von Daniel (Gast)


Lesenswert?

Also kann scheinbar keiner weiterhelfen oder wie sehe ich das?

Immer wenn reti ausgeführt wird, dann beginnt der "PC" bei 0 und wenn 
immer dann wen der "PC" bei 3 ist, dann springt er in "int0-Tsop:" wie 
umgehe ich das?

von digitaler fritz (Gast)


Lesenswert?

du musst eine Stufe weiter unten anfangen.
Interrupts erst wenn du dir selbst helfen kannst.
learning by doing.

kennst du  www.8052.com  ?
da gibt es ein gutes Tutorial.
Das koennte dir helfen.
ciao

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
Noch kein Account? Hier anmelden.