Forum: Mikrocontroller und Digitale Elektronik UC direkt mit seiner Adresse ansprechen


von Peter (Gast)


Lesenswert?

Hallo,

Ich besitze einen 8051 uC
den würde ich gerne unter C programmieren.
bisher hab ich die Adresse des Registers immer mit der Variable:
TMOD = 0x01;
angesprochen

Nun hab ich gehört, dass man den Controller in C direkt unter seiner 
Adresse ansprechen kann.
Im Datenblatt steht folgendes:
TMOD (Timer/Counter-Mode-Register) Adresse:89H
Kann mir jemand sagen wie man das macht?

Danke im voraus

von GUIler (Gast)


Lesenswert?

*((volatile unsigned char *)(0x89)) = 0x01;

von Karl H. (kbuchegg)


Lesenswert?

GUIler schrieb:
> *((volatile unsigned char *)(0x89)) = 0x01;

und die Chancen stehen gut, dass sich in deiner ersten Version hinter 
TMOD nichts anderes versteckt als

#define TMOD   *((volatile unsigned char *)(0x89))

mit anderen Worten

  TMOD = 0x01;
und
  *((volatile unsigned char *)(0x89)) = 0x01;

laufen letzten Endes für den Compiler auf exakt das Gleiche hinaus. Nur 
das im ersten Fall die Schreibweise kürzer, prägnanter, besser lesbar, 
leichter mit dem Datenblatt abgleichbar, .... ist.

Es gibt also keinen Grund die zweite Version (die nur die in der 
Schreibweise aufgelöste 1. Version ist) zu verwenden.

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.