mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Port0 AT89S52 (8051 Familie)


Autor: sama (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jonas Arndt (Firma: GreenWire-Elektronik) (padrejohn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: sama (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: sama (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Peter Dannegger
kanst du mir bitte deine Programme eibissen erklären.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: sama (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch alle,
jetzt  habe ich verstanden wie es geht.
und das fonktioniert auch :-)

mfg Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.