pinmode() Alternative in Assembler

Gast #5008646
Lesenswert?
• ▲
▼
Hallo Leute,
kurze Frage:
Gibt es eine Alternative zum pinmode() Command in Assembler bzw. Wie 
stell ich auf einem 8051 basierten Microcontroller ein, das ein Port als 
Eingang fungiert, um eine logische 1 oder 0 einzulesen.

PS: Benutzen KeilUVision5 als IDE, falls dies von Relevanz ist (In Bezug 
auf Libarys etc.)


Danke für folgende Tipps
LG
Gast #5008757
Lesenswert?
• ▲
▼
Das Problem liegt daran, wie Ich das ganze realisiere im Programm. Wir 
arbeiten mit einem Fotowiderstand der eine logische 1 an den 
Microcontroller senden soll, sodass auf die Umstände reagiert werden 
kann. Das Problem ist das zwar die logische 1 durch das Kabel an den 
Microcontroller gelangen sollte, dieser aber jedoch nichts damit 
anfangen kann und somit immer logisch 0 sprich keine Veränderung 
anzeigt. Dazu müsste es ja in Assembler einen Befehl geben, probiere 
demnächst das mit dem DDR, bin mir aber auch noch unschlüssig wie das 
entgültig gehen soll, weil in der DDR immer von Port A-D geredet wird, 
und wir Port 1-4 haben, macht das einen Unterschied? Muss ich etwas 
ändern?
Beitrag #5008760 wurde von einem Moderator gelöscht.
Gast #5008781
Lesenswert?
• ▲
▼
Hi

>Programmier es doch einfach mit der Arduino IDE in C++.

Da kommt ma vom Regen in die Traufe. Gegen das was Arduino macht ist 
schlechter Assembler immer noch besser.

>Ich versteh
>diese ASM Leute nicht, die ganze Zeit geilen sie sich an ASM auf, aber
>sinnvoll ist es in nahezu keinem Fall. Ganz im Gegenteil. Der Code ist
>schlecht lesbar und unnötig komplex, ...

Da gehe ich davon aus, daß du von Assembler keinen blassen Schimmer 
hast.

MfG Spess
#5008796
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Guck dir mal das Data Direction Register (DDR) an.

Hat der (ursprüngliche) 8051 nicht.

Man darf die Eingänge eines 8051 nicht aktiv H treiben, wenn man den 
Ausgang auf L gesetzt hat.

Also: Portpin auf H setzen und extern dann auf L ziehen. Wenn Du den 
Port dann einliest, liest Du auch ein L.


AssemblerMichi schrieb:
> Sind I/O Ports mit internem Pull UP Widerstand

Na bitte ...


Gruß
Jobst
Gast #5008826
Lesenswert?
• ▲
▼
Dieter schrieb im Beitrag #5008760:
> Programmier es doch einfach mit der Arduino IDE in C++. Ich versteh
> diese ASM Leute nicht, die ganze Zeit geilen sie sich an ASM auf, aber
> sinnvoll ist es in nahezu keinem Fall.

1. Arduino hat nichts mit 8051 zu tun.
2. Hört sich der Text an, als bekam ein Berufsschüler eine Aufgabe, die 
er lösen will. Also erübrigt sich jede Sinn-Diskussion daher.
#5009185
Lesenswert?
• ▲
▼
AssemblerMichi schrieb:
> stell ich auf einem 8051 basierten Microcontroller ein, das ein Port als
> Eingang fungiert, um eine logische 1 oder 0 einzulesen.

Beim originalen 8051 schreibt man einfach eine 1 in das entsprechende 
Port Bit - die sind nämlich Open Drain.

Aber Achtung: Moderne 8051-kompatible können auch Push-Pull Ausgänge 
haben, die dann mit den entsprechenden SFRs konfiguriert werden müssen. 
Da muss man dann das Handbuch (Manual) zum µC lesen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.