Hallo, ich habe da ein Problem: Ein Mikrocontroller vom Typ AT89S8252 soll fünf Taster nach ihren Zuständen abfragen. Wenn Taster 1 gedrückt wird, leuchtet LED1 auf, bis Taster 3 (Stop) gedrückt wird. Die Ports habe ich schon mit dem Oszi durchgemessen, die sind high. Die Taster gehen direkt auf die Ports und schalten gegen Masse. Hier der Code: #include 8051.H .org 0000H start: call LEDs_aus clr P1.5 ;LED3 (Mitte) an main: jb P1.0,fbon ;Prüfen ob Taster gedrückt. (Taster 1) jb P1.4,fboff;aus (Mitte) sjmp main fbon: call LEDs_aus clr P1.1 sjmp main fboff: call LEDs_aus clr P1.5 sjmp main LEDs_aus: setb P1.1 ;LED1 aus setb P1.3 ;LED2 aus setb P1.5 ;LED3 (Mitte, Stop) aus setb P1.7 ;LED4 aus setb P3.1 ;LED5 aus ret .end Achso, noch die Belegung: P1.0: Taster 1 gegen Masse P1.1: LED1 P1.2: Taster 2 gegen Masse P1.3: LED2 P1.4: Taster 3 gegen Masse P1.5: LED1 P1.6: Taster 4 gegen Masse P1.7: LED2 P3.0: Taster 5 gegen Masse P3.1: LED1 -- Ich bin ratlos. danke für eure Hilfe schon im Voraus! Viele Grüße, Stephan
Hallo wir sind auch ratlos musst schon mehr sagen was, wie, .... du hast was gemessen was, wie, .... wird das programm richtig geflasht? Zuletzt noch: Als compiler empfehl ich http://www.controllertechnik.de/software.html als flash programm: http://www.modul-bus.de/mbnews/mbnews02/isp.htm Jochen
Hallo, erstmal sorry, ich hätte das ganze besser beschreiben müssen. Das Ganze läuft auf dem Mikrocontroller-Board von Elektor, das mit dem Buch "Basiskurs Mikrocontroller" geliefert wird. Genaue Daten dazu weiß ich nicht, aber ich kann was aus dem Buch scannen und dann online stellen, wenn das was hilft. Zum Programmieren und flashen benutze ich TASM (bzw. das WIndows-Tool von Elektor "TASMedit"). ATMELisp habe ich auch, ich habe schon mehrfach den µC damit löschen müssen, da sogar eine LED geleuchtet hat, als ich den Controller den Port setzen lies. Ich hab mit dem Oszi die Ports gemessen, an denen die Taster hängen und nur dann, wenn die Taster nicht gedrückt waren. Die Ports waren dann high, was ja wohl zur Abfrage richtig ist???? Liegt es vielleicht daran, dass ich die Taster ohne Pull-Up oder Pull-Down - Rs drangehängt habe? Laut Datenblatt hat der Controller an den Ports 1 und 3 eingebaute Pull-UPs. Die ganze Schaltung soll als Schrittmotorschaltung mit TCA 3727 fungieren. Hier die Anordnung der Taster: ------------------------------ | o || o || o || o || o | | || || || || | ------------------------------ Schnell|Langs.|Stop|Langs.|Schnell| Rückwärts | | Vorwärts Belegung der Taster und LEDs siehe in meinem vorherigen Post. Kann es sein, dass der Controller defekt ist? Ich habe hier noch einen Ersatz. Danke für Eure Hilfe und Mühe! Stephan
Schau dir das mal an: main: jb P1.0,fbon ;Prüfen ob Taster gedrückt. (Taster 1) jb P1.4,fboff;aus (Mitte) jb P1.0, also wenn P1.0 auf High liegt, was der Fall ist wenn der Taster nicht gedrückt wird, wird die LED umgeschaltet. Das muss jnb heißen, denn der Taster verursacht einen LowPegel. Und zum Thema Stack, Interrupvektoren usw. @Denis Gérard Bisher nur AVRs programmiert, oder ? Der 8051 benötigt keine Stackinitialisierung, das wird beim Reset automatisch erledigt...
Hallo Benedikt, noch eine Frage: B. Kainka schreibt in seinem Buch auch jb PX,X und seine Taster gehen an Masse?? Wie geht das? NOch was: Brauche ich keine Pull-Up oder Pull-Down Widerstände? VG, Stephan
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.