Datum: 29.04.2008 10:25
Schönen Guten morgen,
ich will das Port0 ansprechen, dazu habe ich ein wert (z.B. 0xFF) an
diesen Port geschickt.
dieser Teil meiner code siehst so aus:
mov P0, #0FFH
nop
nop
nop
mov P0, #000H
aber irgendwie geht das nicht(habe ich mit Osziloskop gemesen).
kann das eine Harware fehler sein? d.h muss ich zum Beispiel Pullup
widerstände an Port0 anschlieden, usw..
oder muss ich das durch firmware konfigurieren, dass diesen port als
ausgang bzw eingang sein soll, usw..
im Anhang ist der ensprechende Teil meiner Schlatung.
vielen dank im voraus
mfg Frank
Datum: 29.04.2008 10:45
Hallo Frank, der Port 0 ist beim 8252 ein Port ohne interne Pullups. Im Datenblatt steht das auch drin. Wenn du das Ding für den gemultiplexten Daten-/Adressbus nimmst (mit Port 2) zusammen, brauchst keine Pullups, sonst schon!
Datum: 29.04.2008 11:28
sama wrote: > ich will das Port0 ansprechen, dazu habe ich ein wert (z.B. 0xFF) an > diesen Port geschickt. > dieser Teil meiner code siehst so aus: > mov P0, #0FFH > nop > nop > nop > mov P0, #000H > aber irgendwie geht das nicht(habe ich mit Osziloskop gemesen). Wenn Du externen Speicher anschließt, kannst Du P0 nicht als IO-Port verwenden, der ist dann der Adreß-/Datenbus. Um mit dem Scope was zu sehen, probier das hier.
mov r0, #0 mov r1, #0FFh clr a loop: movx @r0, a cpl a movx @r1, a sjmp loop |
Peter
Datum: 29.04.2008 12:04
Danke Jonas Arndt für die Schnelle Anwort. ich benutze das Port0 als für den gemultiplexten Daten-/Adressbus (mit Port 2) zusammen. aber ohne pullup soll ich auch port0 setzen und rücksetzen können? warum macht der Mikrokontroller das nicht? mfg Frank
Datum: 29.04.2008 12:54
hallo Peter Dannegger kanst du mir bitte deine Programme eibissen erklären.
Datum: 29.04.2008 13:26
> ich benutze das Port0 als für den gemultiplexten Daten-/Adressbus (mit > Port 2) zusammen. aber ohne pullup soll ich auch port0 setzen und > rücksetzen können? > warum macht der Mikrokontroller das nicht? Weil die internen_ Pull-Ups des Port0 _nur dann aktiviert werden, wenn der Controller einen Befehl vom externen *Programm*-Speicher holt ODER mittels MOVX-Befehl auf den Datenspeicher zugegriffen wird. Das heisst, du musst es entweder mit MOVX machen, oder externe Pull-Ups verwenden. Peters Programm macht nix anderes, als abwechselnd 0x00 und 0xFF am Port0 mit internen Pull-Ups auszugeben. Ralf
Datum: 29.04.2008 14:46
Danke euch alle, jetzt habe ich verstanden wie es geht. und das fonktioniert auch :-) mfg Frank
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel
