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
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 !
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?
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?
Naja, er springt in ein Programmteil, dessen Einsprungsadresse dem jeweiligen Interruptvektor übergeben wurde.
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
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??
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...
ich schreibe org 03h ;int0 ljmp int0_Tsop ; ; ; int0-Tsop: hier dei int routine ; ; ; reti main:.... ; ; ; ljmp main end
wenn ich das so mache, dann geht garnichtsmehr, das Programm hängt sich auf.... =(
das mit dem "org 03h ;int0" mag keil nicht, wenn das drin ist, dann hängt es...
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.