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???
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.
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
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.
Hier ist die vom Chip ausgelesen BIN. Ist es übrigens normal, dass eine leer compillierte Datei schon 92 byte groß ist?
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
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.
Led soll leuchten wenn P1.x nach gnd zieht...clr P1.x +5V---R---LED---P1.x---gnd
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...
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,...)
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.
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??
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.