Forum: Mikrocontroller und Digitale Elektronik Peripherie in C ansprechen....


von Benjamin (Gast)


Lesenswert?

Hallo Zusammen,
ich habe mir ein Experimentalboard mit einem 8051 selber aufgabaut,
aber bis jetzt habe ich immer nur die on-chip Einheiten in Betrieb
genommen.

Kann mir vielleicht irgend jemand, weiterhelfen wie ich in C die
peripherie Einheiten wie LCD, zusätzliche Ein- und Ausgänge, usw.
ansprechen kann!?
Muss ich das über Zeiger realisieren, oder gibt es noch weitere
Möglichkeiten!?

Ich würde mich über ein Codebeispiel freuen!! Vielleicht mit einer
Beschreibung der Zeilen!?

Gruß
Benjamin

von Peter Dannegger (Gast)


Lesenswert?

Peripherie schließt man an die Portpins an und steuert sie durch Setzen
und Löschen der Portpins an.

Manche Peripherie kann man auch über Interfaces anschließen (SPI, I2C,
1-Wire) bzw. als Single-Master diese Interfaces in Software
nachbilden.

Manche Peripherie kann man auch als Memory Mapped IO anschließen, d.h.
an den SRAM-Bus.
Bei LCDs sieht man das manchmal, allerdings sind die dann oft außerhalb
der Spezifikation (Bus-Timing ist zu kurz).

Um Beispiele zu finden, nutze die Suchfunktion.
Es aufm Silbertablett serviert zu verlangen ist schon etwas arg.


Peter

von Benjamin (Gast)


Lesenswert?

Dank Peter,
aber wie schon geschrieben habe ich meine Board schon fertig!! Alles
ist über den Parallelbus angeschlossen und kann wie ein RAM über die
Ports 0 und 2 angesprochen werden. In ASM würde ich das ja hinbekommen,
aber wie mache ich dies in C!?

Also nochmal die Frage: Daten per Zeiger auf eine Adresse schieben!?
Oder wie macht man sowas!?

Gruß
Benjamin

von OldBug (Gast)


Lesenswert?

Was hälst Du denn davon, im richtigen Forum zu posten?

von Peter Dannegger (Gast)


Lesenswert?

Wenn Du irgendwelche ICs als MMIO verdrahtet hast, kannst Du sie über
einen Pointer auf ihre Adresse ansprechen:


#define blublu 0x8000 // irgendein MMIO

*((unsigned char xdata *)blublu) = blabla; // blabla auf XRAM-Adresse
blublu ausgeben.

bzw.:

blabla = *((unsigned char xdata *)blublu); // von XRAM-Adresse blublu
einlesen


Peter

von Tobias Schneider (Gast)


Lesenswert?

Bei Keil gibts dazu auch noch irgendwo ein XBYTE[] Makro das einem
bissel tip arbeit abnimmt. Einfach mal in der Hilfe nach xbyte suchen

Gruß Tobias

von Benjamin (Gast)


Lesenswert?

Hallo Zusammen,
vielen Dank für die Hilfe. Ich habe jetzt auch endlich mein LCD in
Betrieb nehmen können. freu

Entschuldigung das ich das falsche Forum gewählt hatte... ich dachte
dort könne man mir am ehesten helfen.

Gruß
Benjamin

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.