Forum: Mikrocontroller und Digitale Elektronik AT89C51 Ausgänge schalten nicht


von Stefan (Gast)


Lesenswert?

Ich experimentiere gerade mit Bascom und einem Willem-Programmer den
At89C51 zu programmieren.
Aber wenn ich z.B. schreibe: p1=&B10101010, dann haben alle Pins das
selbe Potential.
Kann mir vieleicht jemand sagen warum???

von Benedikt (Gast)


Lesenswert?

Weil du einen Fehler gemacht hast.
Vermtutlich liegen alle Pins auf High ? Dann läuft entweder der uC
nicht, oder er ist nichtmal richtig programmiert.

von Stefan (Gast)


Lesenswert?

Mein Versuchsaufbau umfasst LED's mit Vorwiderstand an 5V und an
P1.0-P1.7 und die anderen Anschlüsse wie Quartz, Reset, EA,... sollten
eigentlich richtig angeschlossen sein.

Und hier mal mein Testcode:

do
p1=&B10101010
waitms 500
p1=&B01010101
waitms 500
loop

von Benedikt (Gast)


Lesenswert?

Kannst du mal den programmierten Controller auslesen und die gelesenen
Daten posten ? Dann wissen wir immerhin schon, ob es ein Hardware oder
Software Fehler ist.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist die vom Chip ausgelesen BIN.
Ist es übrigens normal, dass eine leer compillierte Datei schon 92 byte
groß ist?

von Gerhard Gunzelmann (Gast)


Lesenswert?

Ich weiß nicht, ob alle gleich sind, aber es gibt C51-Derivate, bei
denen zumindest ein Port Pull-Up's am Ausgang benötigt. (ATMEL C51?)

Gerhard

von edi (Gast)


Lesenswert?

Drehe doch mal eine LED so dass Kathode Richtung 0V schaut

von Stefan (Gast)


Lesenswert?

Hat das nicht eigentlich nur zur Folge, dass die LED leuchtet, wenn der
Pin high ist und nicht bei low?

Im Datenblatt steht, dass alle P1 Pins interne Pull-Ups haben.

von edi (Gast)


Lesenswert?

Led soll leuchten wenn P1.x nach gnd zieht...clr P1.x

+5V---R---LED---P1.x---gnd

von Benedikt (Gast)


Lesenswert?

Bevor hier alle sinnlos rumraten, hier mal ein paar Fakten:
Es ist richtig wie die LED angeschlossen ist, (unabhängig ob der Pin
einen Pullup hat oder nicht.)
Die Software ist auch OK, funktioniert zumindest bei mir im Simulator.

Das heißt es liegt ein Hardwarefehler vor:
- Schwingt der Quarz ?
- Welche Spannung liegt am Reset und EA Pin an ?
- Mach mal (per Hand) einen Reset währen die Schaltung läuft (einfach
mit einem Stück Draht Reset an 5V legen)

Nochmal zu den Pullups: Lediglich P0 hat keine internen Pullups. Alle
anderen Ports haben eiinen.

Bascom ist ja noch schlimmer als ich gedacht hatte: Für 6 Bytes wird
ein Long Jump verwendet, wo doch ein Short Jump ausgereicht hätte.
Dasselbe gilt für die Calls...

von Stefan (Gast)


Lesenswert?

Reset liegt mit 100k an 0V und 10µF an 5V, EA an 5V
Nach Reset dauert es einen kurtzen Moment und alles ist wie zuvor.
Ich hab auch mal an die anderen Prots LED's gehängt, die flackern.
Sieht  aus, als zählen sie im BCD-Code hoch (0,1,10,11,100,101,...)

von Der Elektrische Reiter (Gast)


Lesenswert?

Aus der Hüfte geschossen, würde ich folgendes prüfen:

Schau Dir mal die "Programm Lock Bits" an. Sind Die richtig gesetzt?
Probier mal anstelle des 100k einen 10k Widerstand zum Reset.

von Stefan (Gast)


Lesenswert?

Lock Bits sind keine gesetzt. Könnte es aber villeicht sein, dass die
LED's zu wenig Strom ziehen und durch die Pull-Ups die Spannung hoch
bleibt??

von Stefan (Gast)


Lesenswert?

Das war natürlich Blödsinn was ich gerade geschrieben habe. (Ich hab im
Geiste + und - vertauscht :P)

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.